シンプルなトリガー

トリガーを使用すると、ドキュメントを開くなどの特定のイベントが発生したときに、Google Apps Script が関数を自動的に実行できます。シンプル トリガーは、Apps Script に組み込まれた予約済みの関数セットです。たとえば、ユーザーが Google ドキュメント、スプレッドシート、スライド、フォームのファイルを開くと、onOpen(e) 関数が実行されます。 インストール可能なトリガーは、シンプル トリガーよりも多くの 機能を提供しますが、使用する前に有効にする必要があります。どちらのタイプのトリガーでも、Apps Script は、イベントが発生したコンテキストに関する情報を含む イベント オブジェクトをトリガー関数に渡します。

Google Workspace アドオン プロジェクトでトリガーを使用する方法については、Google Workspace アドオンのトリガーをご覧ください

スタートガイド

シンプル トリガーを使用するには、次の予約済み関数名のいずれかを使用する関数を作成します。

上記の関数名の e パラメータは、関数に渡される イベント オブジェクトです。このオブジェクトには、トリガーが発生したコンテキストに関する情報が含まれていますが、使用は任意です。

制限事項

シンプル トリガーは、ユーザーに承認を求めることなく自動的に起動するため、いくつかの制限があります。

これらの制限は、doGet(e) または doPost(e) には適用されません。

onOpen(e)

ユーザーが編集権限を持つスプレッドシート、ドキュメント、プレゼンテーション、フォームを開くと、onOpen(e) トリガーが自動的に実行されます (トリガーは、フォームへの回答時ではなく、フォームを開いて編集するときにのみ実行されます)。 onOpen(e) は、Google スプレッドシート、スライド、ドキュメント、フォームにカスタム メニュー項目を追加するために最もよく使用されます。

triggers/triggers.gs
/**
 * The event handler triggered when opening the spreadsheet.
 * @param {Event} e The onOpen event.
 * @see https://developers.google.com/apps-script/guides/triggers#onopene
 */
function onOpen(e) {
  // Add a custom menu to the spreadsheet.
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
    .createMenu("Custom Menu")
    .addItem("First item", "menuItem1")
    .addToUi();
}

onInstall(e)

ユーザーが Google ドキュメント、スプレッドシート、スライド、またはフォーム内からエディタ アドオンをインストールすると、onInstall(e) トリガーが自動的に実行されます。ユーザーが Google Workspace Marketplace ウェブサイトからアドオンをインストールしても、トリガーは実行されません。 onInstall(e) の最も一般的な用途は、onOpen(e) を呼び出してカスタム メニューを追加することです。アドオンがインストールされると、ファイルはすでに開いているため、ファイルを再度開かない限り、onOpen(e) は単独では実行されません。 onInstall(e) で実行できることには制限があります。詳しくは、承認をご覧ください。

triggers/triggers.gs
/**
 * The event handler triggered when installing the add-on.
 * @param {Event} e The onInstall event.
 * @see https://developers.google.com/apps-script/guides/triggers#oninstalle
 */
function onInstall(e) {
  onOpen(e);
}

onEdit(e)

ユーザーがスプレッドシートの任意のセルの値を変更すると、onEdit(e) トリガーが自動的に実行されます。ほとんどの onEdit(e) トリガーは、 イベント オブジェクトの情報を使用して適切に応答します。 たとえば、次の onEdit(e) 関数は、最後に編集された時刻を記録するセルにコメントを設定します。

triggers/triggers.gs
/**
 * The event handler triggered when editing the spreadsheet.
 * @param {Event} e The onEdit event.
 * @see https://developers.google.com/apps-script/guides/triggers#onedite
 */
function onEdit(e) {
  // Set a comment on the edited cell to indicate when it was changed.
  const range = e.range;
  range.setNote(`Last modified: ${new Date()}`);
}

onEdit() トリガーは、最大 2 つのトリガー イベントをキューに登録します。

onSelectionChange(e)

ユーザーがスプレッドシートの選択を変更すると、onSelectionChange(e) トリガーが自動的に実行されます。このトリガーを有効にするには、トリガーを追加した後、スプレッドシートを開くたびにスプレッドシートを更新します。

選択が短時間で複数のセル間を移動すると、レイテンシを短縮するために一部の選択変更イベントがスキップされることがあります。たとえば、2 秒以内に多くの選択変更が行われた場合、最初と最後の選択変更のみで onSelectionChange(e) トリガーが有効になります。

次の例では、空のセルが選択されると、onSelectionChange(e) 関数によってセルの背景が赤に設定されます。

triggers/triggers.gs
/**
 * The event handler triggered when the selection changes in the spreadsheet.
 * @param {Event} e The onSelectionChange event.
 * @see https://developers.google.com/apps-script/guides/triggers#onselectionchangee
 */
function onSelectionChange(e) {
  // Set background to red if a single empty cell is selected.
  const range = e.range;
  if (
    range.getNumRows() === 1 &&
    range.getNumColumns() === 1 &&
    range.getCell(1, 1).getValue() === ""
  ) {
    range.setBackground("red");
  }
}

doGet(e)doPost(e)

doGet(e) トリガーは、ユーザーが ウェブアプリにアクセスしたとき、またはプログラムがウェブアプリに HTTP GET リクエスト を送信したときに自動的に実行されます。doPost(e) は、プログラムがウェブアプリに HTTP POST リクエストを ウェブアプリに送信したときに実行されます。これらのトリガーについては、 ウェブアプリHTML サービス、 および コンテンツ サービスのガイドで詳しく説明しています。doGet(e)doPost(e) には、上記の制限は適用されません。

使用可能なトリガーの種類

シンプル トリガーの制限により ニーズを満たせない場合は、インストール可能なトリガー を使用できます。次の表に、イベントの種類ごとに使用できるトリガーの種類をまとめます。たとえば、Google スプレッドシート、スライド、フォーム、ドキュメントはすべてシンプルなオープン トリガーをサポートしていますが、インストール可能なオープン トリガーをサポートしているのはスプレッドシート、ドキュメント、フォームのみです。

イベント シンプル トリガー インストール可能なトリガー
開く
[
スプレッドシート
]
[
スライド
]
[
フォーム*
]
[
ドキュメント
]

function onOpen(e)

[
スプレッドシート
]
[
フォーム*
]
[
ドキュメント
]
編集
[
Sheets
]

function onEdit(e)

[
Sheets
]
選択の変更
[
Sheets
]

function onSelectionChange(e)

インストール
[
スプレッドシート
]
[
スライド
]
[
フォーム
]
[
ドキュメント
]

function onInstall(e)

変更
[
Sheets
]
フォーム送信
スプレッドシート
フォーム
時間主導型(時計)
[
スプレッドシート
]
[
スライド
]
[
フォーム
]
[
ドキュメント
]
[
スタンドアロン
]
Get
スタンドアロン

function doGet(e)

投稿
スタンドアロン

function doPost(e)

* Google フォームのオープン イベントは、ユーザーがフォームを開いて回答するときではなく、編集者がフォームを開いて変更するときに発生します。