| Googleを追いかけろ! |
| |
| . | ||
| home >> ユーザーガイド 5. イベントへの応答スクリプト | ||
|
![]() |
イベントへの応答スクリプトを実行する
システムの詳細や差異を解説する前に、イベントという用語を少し明らかにしましょう。一般的にはイベントとは下の例にあるような、何かが生じるここと捕らえられています。
単純なイベントハンドラー
Google Apps Script language には簡単なイベントハンドラーが組み込まれています。関数を実行するイベントの型である印として関数に特別な名前を与えます。
以下の環境下でスクリプトや関数を実行するためのイベントハンドラー利用します。
onOpen()
onOpen()関数 はユーザーが編集のためにスプレッドシートを開くと自動的に実行される関数です。もっとも一般的な使われ方は
スプレッドシートのメニューバーにカスタムメニューを追加する時でしょう。
// onOpen関数はスプレッドシートが開けられる度に自動的に実行される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(event)
この関数の意味するところは、スプレッドシートのどこかのセルが編集されたときに自動的に実行されるということです。
非常に単純な使用例として、編集されたセルに更新時刻の記録を残すことでしょう。関数に渡されたパラメーターの e はプロパティを
一つ持っています - source - まさに編集されたスプレッドシートそのものです。
function onEdit(event)
{
var ss = event.source.getActiveSheet();
var r = event.source.getActiveRange();
r.setComment("Last modified: "+(new Date()));
}
onInstall()
Script Gallery からスクリプトをインストールしたときに呼ばれるのが onInstall 関数です。
使われ方としては onOpen() とほとんど同じと考えてよいでしょう。ユーザーのためにカスタムメニューをセットすることです。
スクリプトがスプレッドシートにはじめて挿入されたとき、スプレッドシートは開く状態には無いため onOpen は呼ばれません。
そこで、onInstall() から直接 onOpen() を呼びます。
function onInstall()
{
onOpen();
}
インストール可能なイベントハンドラーは、スクリプトエディタ内のトリガーメニューに設定されてされています。このドキュメントでは
これらをトリガーと呼んでいます。次のようなイベントを発生させるときは、スクリプトを実行させるためにトリガーを利用します。
インストール可能なイベントハンドラー
インストール可能なイベントハンドラーでは時刻に基づくトリガーの利用ができます。インストール可能なイベントハンドラーは、単純なイベントハンドラーといくつかの類似性を持っていますが、
次の相違点があります。
時間駆動型トリガーの使用
毎日、毎時間、各週の決められた日にスクリプトを実行させるためのトリガーの設定方法です。
指定した時刻(毎)に実行させる
![]() イベントの詳細
イベントはすべてのイベントハンドラーからparameter (e)という形で渡されます。parameter (e)には詳しい属性を追加できます。
トリーガーの働きやスクリプトがトリガーされた方法に関する情報をキャプチャするような定義付けです。
もし属性を利用するのなら、前述したようにトリガーメニューからトリガーをセットしておかなくてはなりません。
次の例はフォームが送信されたときにスプレッドシートによってキャプチャーされた個々の情報を含むようにデザインされたメールを送信する
関数です。
// フォームが2つのフィールド(name と age)を持っていると仮定した場合function onFormSubmit(e) { var name = e.values[0]; var age = e.values[1]; var timestamp = e.values[2]; var submitter = e.values[3]; MailApp.sendEmail ("email_username", "form submitted", name + ", age " + age + " submitted by " + submitter + " on " + timestamp + ".") }
この関数の中でparameter e はキャプチャーされてスクリプトに使用されるイベントについての詳細を確定します。
Spreadsheet form-submit イベントでは e.values にアクセスできます。Google Apps を利用することで、
送信者名を自動的に記録するオプションをフォームに持たせることができ、e.namedValues['Username'] としてスクリプトに利用することができるのです。
上の例では e.values はユーザーによって送信されたフォーム内容の値すべてを持つ e.values[0],e.values[1].... e.values[n] に相当する配列です。
ここではスプレッドシートの列順と一致した列順の値になっています。
下はトリガーに利用可能な属性をまとめた表です。
イベントハンドラーにおけるエラー
イベントハンドラーに失敗した時、Script Editor からスクリプトを実行しているときはエラーが分かりません。
スクリプトのどこでエラーが生じているのか判断するには、スクリプトを try-catch コードブロックで囲んでください。
これはエラー情報をキャプチャーしてエラーメッセージのメール通知をくれる特別なコードです。
function myFunction() {
try {
-- ユーザーガイド 5. イベントへの応答スクリプト : end -- 2011/10/30
|