トリガー

トリガーとは

GASには、ドキュメントを開くなどの特定のイベントが発生した際に関数を自動的に実行するトリガーという機能があります。
さまざまな条件でトリガーを設定することができますが、以下のトリガーはGASに組み込まれている予約済みの関数です。
このトリガーは シンプルトリガー と呼ばれており、関数を定義することで利用することができます。

関数名 概要
onOpen(e) ユーザーが編集する権限を持つスプレッドシート、ドキュメント、プレゼンテーション、またはフォームを開いたときに実行されます。
onInstall(e) ユーザーがGoogleドキュメント、スプレッドシート、スライド、またはフォーム内からエディターアドオンをインストールすると実行されます。
onEdit(e) ユーザーがスプレッドシートの値を変更したときに実行されます。
onSelectionChange(e) ユーザーがスプレッドシートの選択を変更したときに実行されます。
doGet(e) ユーザーがWebアプリにアクセスしたとき、 またはプログラムがHTTPGET要求をWebアプリに送信したときに実行されます。
doPost(e) プログラムがHTTPPOSTリクエストをWebアプリに送信するときに実行されます。

シンプルトリガーはユーザーの承認を求めることなく実行できるという特徴があります。
その一方で、以下のような制限もあります。

  • ファイルが読み取り専用(表示またはコメント)モードで開かれている場合、これらは実行されません。
  • 承認が必要な サービスにはアクセスできません。(Gmail Service など)
  • 30秒を超えて実行することはできません。

上記以外にもいくつか制限がありますので、詳細は以下リンク先の公式サイトで確認してください。
https://developers.google.com/apps-script/guides/triggers

今回はこのシンプルトリガーのうち onOpen(e) でシンプルトリガーがどのような機能かを確認してみましょう。
(次章では doGet(e) を深掘りしていきます。)

onOpen(e)

onOpen関数でコーディングした内容は、スプレッドシート、ドキュメント、プレゼンテーション、またはフォームを開いたときに実行されます。
ただし、前提としてファイルを開いたユーザーに編集権限が必要 となります。
onOpen関数の一般的な活用方法としては、初期表示時に画面上部にメニューを追加する処理を実行することが多いです。
https://developers.google.com/apps-script/guides/menus

function onOpen(e) {
  /**
   * スプレッドシートの上部に「カスタムメニュー」を追加します。
   * 「カスタムメニュー」を開くと選択肢として「アイテム1」と「アイテム2」が表示されます。
   */
  SpreadsheetApp.getUi()
    .createMenu('カスタムメニュー')
    .addItem('アイテム1', 'menuItem1')
    .addItem('アイテム2', 'menuItem2')
    .addToUi();
}

上記スクリプトを保存したのち、スプレッドシートを更新して開き直してみてください。
スプレッドシートを開き直すことでonOpen関数が実行され、以下画像のようにメニューが表示されます。
page_6_1.png

時限式のトリガー

特定のイベントが発生した際に実行されるトリガーですが、
時間を条件にトリガーを設定することもできます。
この時限式のトリガーを活用することで、「◯時間ごとに」や「毎日0〜1時に」などの時間を条件にしたトリガーを設定できます。
トリガーは以下の画像通り、[トリガー]を選択するとトリガーの画面が表示され、
同画面の[トリガーを追加]ボタンをクリックするとトリガーを追加する画面が表示されます。
page_6_2.png
トリガーを追加する画面ではまず「実行する関数を選択」で実行する関数の名前を指定します。
指定したのちはその関数を実行する条件を指定していきます。
page_6_3.png
イベントのソースを「時間主導型」を選択すると、「時間ベースのトリガーのタイプを選択」でトリガーのタイプを選択できます。
ここで「時間ベース」を選択すると何時間おきに実行するかを設定できるようになります。
page_6_4.png

他にもさまざまな条件のトリガーを設定することができますので、
詳細は以下リンク先の公式サイトをご参照ください。
https://developers.google.com/apps-script/guides/triggers/installable