[GAS]スクリプトを自動制御する[トリガー]
Webアプリ・プログラミング
-
- 公開日
-
- 最終更新日
エンプロススタッフ
カレーには嫌な思い出を忘れさせる効果があるらしいですよ、小林です。
先日テレビでみました。 今回はタイミングを決めてコードを実行する方法について説明します。題して
トリガーを使ってコードを自動制御する!!
ちなみに、コードを自動制御する為のきっかけ(ファイルの起動・値の変更・日付...etc)をトリガーと呼び、
何きっかけで始めるかを決めることを「トリガーを設定する」という言いますので、覚えておきましょう。
まずはコードを作る!!
今回は簡単に左のデータを右にコピーするコード(関数)を作りました。
実際のコードは下の通り
function sampleFunction() {
var data = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1, 6, 2).getValues();
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1,4,6,2).setValues(data);
}
今回はsampleFunctionという名前でコード(関数)を作りました。
ここまではgoogle apps scriptを使ってみよう!!や、[GAS]スプレッドシートのコピー等の復習ですね!!
そしてここからが本題!!
トリガー設定画面を開く!!
下記画面のように、スクリプトエディタの「リソース」から「現在のプロジェクトのトリガー」をクリックし、トリガーの設定画面を開きます。ここに現在のファイルで設定済みのトリガーが一覧表示されます。初めてトリガーを設定する場合はこんな画面になっています。
この時「全てのトリガー」をクリックすると、他のスプレッドシートで設定したトリガーも一緒に表示されます。
慣れるまでは「現在のプロジェクトのトリガー」を使うのがおすすめ。
そして、新しくトリガーを設定しますので真ん中の青い文字をクリックします。
トリガーを設定!!
ここからトリガーを設定します。
設定項目は「実行」と「イベント」から必要な項目を選択するだけ、簡単でしょ♪
「実行」の項目は、実行するコード(関数)を選択します。この例では先ほど作ったsampleFunctionを選択します。
「イベント」ではまず、「スプレッドシートから」または「時間主導型」のどちらかを選択します。
- スプレッドシートから
- スプレッドシートの起動時や、値の変更時等、シートに関する動作でコード(関数)を起動。
- 時間主導型
- 日付の指定や、10分毎等、時間に関することでコード(関数)を起動。
いずれかを選ぶと今度は実際にどのタイミングで処理を行うかを選択します。
「時間主導型」を選択します。
そして次に実際のタイミング(詳細設定)を選択します。
上記の例では「毎月23日の午前0時~1時の間に実行」という設定をかけています。
他にも「月タイマー」の部分で選んだものによってその後の選択肢が変わってきますが、
どれも直感的に選べますので、トリガー設定画面の出し方だけ覚えておきましょう!!
ちなみに、トリガー設定画面を使用する代わりに、コード(関数)を使う方法もあります。
例えば、起動時にコードを実行したい場合はコードの名前をonOpen()にすると自動実行してくれます。
どういうことかと言うと、
function onOpen(){
var data = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1, 6, 2).getValues();
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1,4,6,2).setValues(data);
}
この様に「スプレッドシートから」の項目は特定のコード名にするとトリガー設定がされるようになっています。
「時間主導型」の場合はコードの中で設定をする必要があるのでもう少し難しいですが、設定できるようになっています。
コードでの設定の仕方は別の機会にやりますが、今回の方法でも基本的な事は出来ますので、試してみて下さい。