×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。



>> ユーザーガイド >> イベントとトリガー >> イベントの理解 | トリガーの理解 | トリガーのプログラム的管理


トリガーの理解

トリガーは特定のイベントをリッスンし、そのイベントが発生したときに実行する関数となるスクリプトリソースのタイプです。


WWW GoogleStyle


シンプルなトリガー

シンプルなトリガーは、Google.Apps.Script言語に組み込まれている特別な名前の関数のセットです。
それらはスプレッドシートにバインドされているスクリプトにのみ適用されます。 これらシンプルなトリガーを使うときは、自作の関数にそれを実行するイベントのタイプを表す特定の名前を付けます。
下記のリストは、使用可能なシンプルなトリガーとそれらが扱うイベントを示しています。

これらのシンプルなトリガーは、Googleスプレッドシートでのアクションに応答して実行されます。また、このときはアクティブなユーザーとして実行されます。 たとえば、ボブがスプレッドシートを開いたとき、onOpen関数はスプレッドシートに誰がスクリプトを追加したかに拘わらず実行されます。このような理由から、シンプルなトリガーは、何が許可されているかによって制限されています。下のリストを参考にしてください。

イベントの権限の詳細については、コンテナ固有のトリガーから参照してください。

onOpen ()

onOpen()は、ユーザーがスプレッドシートを開いたときに自動的に実行されます。最も一般的な使われ方としては、スプレッドシートのメニューバーにカスタムメニュー項目を追加するようなときです。


// The onOpen function is executed automatically every time a Spreadsheet is opened
function
onOpen() {
var
ss =
SpreadsheetApp.
getActiveSpreadsheet();
var
menuEntries = [];
// When the user selects "addMenuExample" menu, and clicks "Menu Entry 1", the function function1 is executed.
menuEntries.push({name:
"Menu Entry 1"
, functionName:
"function1"
}); menuEntries.push({name:
"Menu Entry 2"
, functionName:
"function2"
}); ss.addMenu("addMenuExample", menuEntries); }

onEdit ()

スプレッドシートの任意のセルを編集したときonEdit()トリガーが自動的に実行されます。非常にシンプルなユースケースとしては、編集されたセルのコメントに最終更新時刻を記録することです。 発生した編集に関する追加情報を含むイベントオブジェクトを受け入れます。使用可能なフィールドの詳細については、イベントについてのページを参照してください。


function
onEdit(
event
) {
var
ss =
event
.source.getActiveSheet();
var
r =
event
.source.getActiveRange(); r.setComment(
"Last modified: "
+ (
new
Date
())); }

onInstall ()

Script Gallery(スクリプト・ギャラリー)からスクリプトをインストールしたときにonInstallトリガーが呼び出されます。onInstall()の最も一般的なユースケースは、onOpen()の場合と同じで、ユーザーのカスタムメニューを設定するときです。 スクリプトがはじめてスプレッドシートに組み込まれたとき、スプレッドシートが既に開いているため、onOpen()のトリガーを呼び出すことはできません。メニューバーや他のタスクをインストールされた後すぐに実行する必要がある場合、スクリプトはonInstall()からonOpen()を呼び出すことができます。これは次のようにします。


// Call onOpen from onInstall
function
onInstall() { onOpen(); }
// onOpen will run when the script is subsequently opened
function
onOpen() {
// some code here
}


インストール可能なトリガー

Installableなトリガーは、スクリプトエディタ内のリソースメニューから設定されています。次にあげるシナリオでは、スクリプトを実行するためにInstallableなトリガーを使います。

Installableなトリガーは、シンプルなトリガーとの類似点がありますが、次のような違いがあります。

作成するときには、スクリプト内の1つまたは複数の機能にトリガを接続することができます。任意の関数に複数のトリガーが添付することができます。

トリガーによってスクリプトが実行されたとき、スクリプトはトリガーをインストールしたユーザーのIDを使用して実行されます。これはセキュリティ上の理由からです。 たとえば、自分がスクリプト中にトリガーをインストールした場合、同僚がイベントをトリガーするためのアクションを起こした場合、それは同僚のIDではなく、自分のIDで実行されたことになってしまいます。 これに関する詳細な情報については、許可とスクリプトの実行を参照してください。



時間トリガーの利用

スクリプトを毎日、毎時、または毎週同じ曜日で実行したい場合があると思います。ここでは、スクリプトを実行するためのトリガーの設定方法を説明します。

指定した時刻にスクリプトを実行する手順を下に示します。

  1. スクリプトエディタから、Resources > Current script's triggersでスクリプトのトリガーを選択します。No triggers set up. Click here to add one now.のメッセージが表れます。
  2. No triggers set up. Click here to add one now.のリンクをクリックします。
  3. スケジュールで実行したい関数をRunの下から選びます。
  4. EventsからTime-drivenを選択します。
  5. 最初のドロップダウンリストで表示されたウィークタイマー、デイタイマー、時間タイマ、分単位のタイマー、または特定の日付と時刻を選択します。選択に応じて追加のリストやテキストボックスが表示されます。 関数をテストするには、短い期間を選択すれば何時間、何日も待たずにすみます。
    • 週タイマーを選んだ場合は、その日の曜日と時刻を選択します。
    • デイタイマーを選んだ場合は、時間を選択します。
    • 時間タイマーを選んだ場合は、時間の間隔を選択します。
    • 分タイマーを選んだ場合は、分の間隔を選択します。
    • 特定の日付と時刻を選んだ場合は、YYYY-MM-DD HHに日付(MM形式)を入力します。
  6. Saveをクリックして保存します。
  7. スクリプトが特定の時間帯の正しい時刻に実行されることを保証するには、File > Propertiesでタイムゾーンを選択して保存します。


コンテナ固有のインストール可能なトリガー

スプレッドシートにバインドされているスクリプトをトリガーするための方法には、以下の3つのアクションがあります。

たとえば、スプレッドシート内のフォーム送信によって新しいデータが追加される時、毎回データの分析や更新ができます。

特定のアクション生じたときにスクリプトを実行するには

  1. 新規のスプレッドシートを開いてください。
  2. Unsaved Spreadsheetダイアログボックスをクリックして、名前を変更します。
  3. Tools > Script Editorを選択して実行したいスクリプトを書きます。
  4. Resources > Current script's triggersを選択します。
  5. No triggers set up. Click here to add one now.というメッセージのあるパネルが表示されます。
  6. リンクをクリックします。
  7. Runの下からトリガーによって実行したい関数を選択します。
  8. Eventsの下からFrom Spreadsheetを選びます。
  9. 次のドロップダウンリストからOn openを選び
  10. Eventsの下からFrom Spreadsheet,On edit,On form submitのいずれかを選びます。
  11. 保存します。


トリガーにおけるエラー

トリガーが失敗したとき、スクリプトエディタからスクリプトを実行するときと同じようにエラーが表示されません。Google.Apps.Scriptは、トリガの失敗を電子メールで通知します。 ほとんどの場合、電子メールにはスクリプトの失敗に起因するエラーが含まれています。また、受け取る電子メールには、失敗したトリガーを編集したり削除したりするためのリンクが含まれています。

デフォルトでは、この電子メールは深夜に1日1回送信され、特定のスクリプトの各障害についての情報が含まれています。通知が送信される日の初期値の時刻と通知が送信されるアカウント、通知が送信される頻度などは変更することができます。 さらに、失敗したときには直ちに送信されるようにメール通知を設定することもできます。

デフォルトの通知設定の変更は以下の要領で行います。

スクリプトの試験過程では、自動的に送信されてくる通知や直ぐに送信されるように頻度変更せずとも、トリガーに起因するエラーを前もって確かめたいものです。、 スクリプトで何が悪かったのかを判断するには、try-catchのコードブロックを使用してスクリプトを囲めば実現できます。これは、エラーに関する情報を取得し、エラーメッセージを含む電子メール通知が送信されるようにする特殊なコードです。


function
myFunction(){
try
{
// script code here
}
catch (e)
{
MailApp.
sendEmail(
"youremail@example.com"
,
"Error report"
, e.message); } }



2012-11-09

pageTOP