×

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



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


トリガーのプログラム的管理

Google.Apps.ScriptのScript Serviceは、トリガーをプログラム的に管理することができます。

たとえば、ユーザーがスプレッドシートのメニューからスクリプトを実行すると、スクリプトはプログラム的にトリガーを作成できます。

プログラム的にトリガーを作成するスクリプトサービスを使用することにより、エンドユーザーは、もはや自分自身でトリガーを作成するためにスクリプトエディタにアクセスする必要はありません。


WWW GoogleStyle


各トリガーオブジェクトは4つのプロパティを持っています。

  1. 一意なID::各トリガーには固有のIDを持っています。このIDは、ユーザーに属するトリガーすべてがそれぞれについてユニークです。Trigger.getUniqueId()を使用してこのプロパティを取得できます。
  2. イベントの種類::これはトリガーが実行するイベントのタイプを説明しています。プロパティはTrigger.getEventType()を利用して取得できます。 ScriptApp.EventTypeで説明したようにイベントの種類がいくつかあります。 たとえば、EventTypeには、時間ベースのトリガーであるCLOCKやスプレッドシートを開いたときに実行されるトリガーを意味するON_OPENなどです。
  3. ハンドラ関数::ハンドラ関数は、トリガーが実行されたときに呼び出される関数です。Trigger.getHandlerFunction()を利用してプロパティを取得できます。
  4. トリガーソース::トリガーがリッスンしているイベントが発生したとき、トリガーは実行されます。各トリガーはソースと同様にイベントタイプに関連付けられています。 トリガのソースはTrigger.getTriggerSource()を使用してフェッチすることができ、その値はScriptApp.TriggerSourceによって表されます。

トリガーの作成

新しいトリガを作成するには、TriggerBuilderを作成し、ScriptApp.newTrigger()を使用してハンドラ関数を指定します。 TriggerBuilderを作成したら、トリガーイベントのソースを指定することができます。たとえば、トリガーイベントは、時間ベースまたはスプレッドシートのイベントに基づいている可能性があります。 ソースを選択したらトリガー固有の設定を利用してトリガーを設定します。たとえば、スプレッドシートのトリガーならば、トリガーがリッスンしている(たとえばonEdit)イベントのタイプを設定できます。

以下、様々な時間駆動型トリガーとスプレッドシートのトリガーを作成する方法の例です。


// Create a time-driven trigger
function
createTimeTrigger() {
// trigger every 6 hours
var
everySixHours =
ScriptApp.
newTrigger(
"runCommand"
) .timeBased() .everyHours(
6
) .create();
// One-time execution only
// Use JavaScript Date of 5/17/2012
var
date =
new
Date
(2012, 5, 17);
var
oneTimeOnly =
ScriptApp.
newTrigger(
"runCommand"
) .timeBased() .at(date) .create();
// Once a week at 06:00
var
onceAWeek =
ScriptApp.
newTrigger(
"runCommand"
) .timeBased() .onWeekDay(
ScriptApp.WeekDay.
MONDAY) .atHour(
6
) .create();
// Each trigger has a unique ID
Logger.
log(
"Unique ID of Trigger: "
+ everySixHours.getUniqueId()); }
function
createSpreadsheetTrigger() {
// Get spreadsheet key
var
spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var
ssId = spreadsheet.getId();
// Create onEdit trigger using the Spreadsheet
var
onEditTrigger =
ScriptApp.
newTrigger(
"runCommand"
) .forSpreadsheet(spreadsheet) .onEdit() .create();
// Create onEdit trigger using sheet ID
var
onEditTrigger = ScriptApp.newTrigger(
"runCommand"
) .forSpreadsheet(ssId) .onEdit() .create(); }

トリガーの修正と削除

プログラムで、既存のトリガーを変更する唯一の方法は、それを削除して新しいものを作成することです。トリガーを削除するには、まず削除したいトリガーオブジェクトへの参照を取得する必要があります。 その後、削除したいトリガーオブジェクトを呼び出して、ScriptApp.deleteTrigger()を渡します。下のサンプルでは、指定された一意のトリガーIDを使用してトリガーを削除する方法を示しています。


// Delete a trigger with the given unique ID
function
deleteTrigger(triggerId) {
// Locate a trigger by unique ID
var
allTriggers =
ScriptApp.
getScriptTriggers();
// Loop over all triggers
for(var i
=
0
; i < allTriggers.length; i++) {
if
(allTriggers[i].getUniqueId() == triggerId) {
// Found the trigger and now delete it
ScriptApp.
deleteTrigger(allTriggers[i]); break; } } }



2012-11-09

pageTOP