【GAS入門】onOpenトリガー完全攻略〜複数設定する方法はある?〜
GASのonOpenトリガーを使って特定の処理を自動化したいです

猫男

catman
オッケー。catmanと一緒に学んでいこう
GASのonOpenトリガーとは?
GASのonOpenトリガーとは、
GoogleスプレッドシートやGoogleドキュメントを開いたときに自動で実行されるスクリプトだ。
- ファイルを開く
- 再度読み込み
というアクションが引き金となり、onOpen関数の内部の処理が実行されるんだ。
onOpenはシンプルトリガーだから、GASの「トリガー設定」を手動追加する必要もない。
「シンプルトリガー」:関数名を特定の名前にするだけで、自動的に発火するトリガーのこと
日常に例えるなら、ドアを開けたら上からタライが落ちてくる場面だ。
たまに、あるだろ?
このトリガーを使えば、ファイルを開いた際に自動的に初期設定をしたり、メニューを追加したりできるぞ。
onOpenトリガーの基本設定方法
まずは基本的なonOpenトリガーの設定を見てみよう。
function onOpen() {
SpreadsheetApp.getActiveSpreadsheet().toast('こんにちは!');
}
– function onOpen() {} を定義することで、スプレッドシートが開かれたときに実行。
– toastメソッドで小さなポップアップ通知を表示。
このスクリプトをとあるスプレッドシートのコンテナバインド型で作成。
そして、そのスプレッドシートを開くか、リロードするかすると、次のように右下にポップ表示が出るはずだ。
onOpenトリガーが実行されない理由
あれ、でも、僕のonOpenトリガーはどうして動かないんだろう…

猫男

catman
GASのonOpenトリガーが動かない理由はいくつかある。例えば、権限の設定やスクリプトの誤りが考えられる。確認してみよう。
- 権限の問題:スクリプトが適切な権限で実行されていないと、onOpenは動作しない。
- スクリプトのエラーチェック:JavaScriptの構文チェックを行い、エラーが無いか確認する。
- スプレッドシートの動作:開くスプレッドシートでトリガーが紐付いているか確認。
これらをチェックしても動かない?
そんなときはログを表示してデバッグさ。Logger.logでonOpenの処理がリロード時に実行されているか確認してみよう。
https://earthpg.school/gas-console-logger/
GASのonOpenは複数設定できる??
onOpenを複数設定したい場合にはどうしたらいいんですか?

猫男

catman
onOpenトリガーは1つしか使えない。だが、その中で他の関数を呼び出して複数の処理を行わせる方法があるぞ。
function onOpen() {
taskOne();
taskTwo();
}
function taskOne() {
Logger.log("タスク1実行中");
}
function taskTwo() {
Logger.log("タスク2実行中");
}
複数の処理を実行したいときは、onOpen内で複数の関数を呼び出す設計にするのが基本だ。
GASのonOpenとonEditの違い
onOpenとonEditの違いってなんですか?

猫男

catman
onOpenとOnEditはトリガーの発動条件が違う。onOpenはファイルが開かれたとき、OnEditはスプレッドシートが編集されたときに発動する。その違いを意識するといいぞ。
日常生活にたとえると?

猫男

catman
onEditは、部屋の中でちょっとでも動いたらタライが落ちてくる場面だな
あっ、へ〜

猫男

catman
この際、GASのonEditの使い方も復習しておこうぜ
練習問題
GASのonOpenトリガーを利用して「おかえりなさい」というメッセージをログに出力するスクリプトを書いてみよう。
解答・解説
function onOpen() {
Logger.log("おかえりなさい");
}
なるほど、これでonOpenトリガーもしっかり理解できました!ありがとうございます、catman!

猫男

catman
どういたしまして。引き続きGASを使ってスクリプトを自動化していこう。何か困ったことがあればまた呼んでくれ。