掲題の通り、GASでGoogleForm送信時にSlack通知を飛ばしたかった。
こちらの記事の通り設定したら通知は来るようになったのだが、2回連続で来るようになった。
これはこれで使えるのだが、2回も同じ内容が毎回飛んでくるとかなり鬱陶しい。
なのでこれを直そうと思って色々試してみたが、GASの仕様理解しないとかなり沼にハマるので残しておこうと思う。
結論
2回通知が来た原因は、GASのSimple Triggerで発火される関数をInstalled Triggerでも登録していたからだった。
Simple Trigger
Installed Trigger
Simple Triggerとは
ある特定の関数名を定義しておくだけで発火するトリガーのこと。
例えばGoogleスプレッドシートを開いたタイミング、編集したタイミングでイベント発火させたい場合、それぞれonOpen(e)
,onEdit(e)
といった関数を定義しておけば自動で発火してくれる。
今回はフォーム送信時だったので、onFormSubmit(e)
だった。
Installed Triggerとは
イベント発火時に、特定の関数を呼び出すためのトリガーのこと。
下のモーダルから設定することが出来るが、こちらはSimple Triggerと違って発火させるイベントと発火させる関数を設定しておかないといけない。
逆に関数名の縛りはないので、自由にネーミング出来る。
フォーム送信時に通知が2回送られていたのは、Simple TriggerであるonFormSubmit(e)
をInstalled Triggerに登録していたからだった。
なので、onFormSubmit(e)
という関数名を変更するか、トリガーを削除すればSlack通知は1回だけになる。
たったこれだけのことに半日くらい時間溶かした…。