みなさんこんにちは。うえはら(@tifoso_str)です。
Google Apps Script はメニューからトリガーの設定ができます。
また、スクリプトを作成すれば自分に合わせたトリガーを設定できてとても便利です。
そんな、便利なGoogle Apps Scriptですが、最近カレンダーの予定更新をトリガーに設定することができるようになりました。
February 26, 2018
Calendar event triggers are now available. You can use these triggers in conjunction with the Calendar advanced service to discover recently changed calendar events via regular sync operations.
今までは、「時間主導型」の「日タイマー」や「スプレッドシートから」の「起動時」などしかなかったのですが、Googleカレンダーの予定更新が追加されたことで、トリガー設定の幅が広がります。
今回はどういうときにトリガーが実行されるのか確認も含めて、Googleカレンダーで予定が更新された時にチャットワークへ通知させてみます。
チャットワークにメッセージを送信する方法
通知方法としてChatWorkClient for GASライブラリを利用して、メッセージを送信したいと思います。
ChatWorkClient for GASライブラリを利用する方法は以前の記事をご確認下さい。
今回は、スクリプトが実行されると、チャットワークへ「Googleカレンダーで予定が変更されました。」と通知させます。
5行目のbody:の後が送信したいメッセージになるので、下記のように変更します。
function sendMessageCW() { var client = ChatWorkClient.factory({token: 'XXXXXXXXXXXXXXXXXXXXXXX'}); //チャットワークAPI client.sendMessage({ room_id:*********, //ルームID body: 'Googleカレンダーで予定が変更されました。' }); }
トリガーを設定する前に、スクリプトがキチンと動くか確認します。
sendMessageCWを実行して、チャットワークへメッセージが届いているか確認してください。
スクリプトの動作確認が終わったら次は、トリガーの設定です。
カレンダーからのトリガーを設定する
カレンダーの予定変更を検知してスクリプトを実行するトリガーを作成します。
メニューの「編集」→「現在のプロジェクトのトリガー」から新しいトリガーを追加します。
イベント設定の1番目が、デフォルトでは「時間主導型」となっているので、この部分を「カレンダーから」へ変更します。
イベント設定の1番目を「カレンダーから」にすることで、カレンダーに関することをトリガーに設定できます。
イベント設定の2番目は今のところ「予定を更新しました」しか項目がありません。
イベント設定の3番目にカレンダーIDを記入して、どのカレンダーの更新を検知するか設定します。
デフォルトでは「Googleアカウント」(マイカレンダーID)が設定されています。
カレンダーからのトリガー実行の確認
それでは、「予定を更新しました」というのが、どのようなときにトリガーが実行されるのか確認していきます。
予定を新規に作成したとき
まずは、カレンダーに予定を新規作成したときです。
新規に予定を作成し、保存ボタンを押します。
予定を保存すると、すぐにチャットワークへ通知がきます。
ほとんどタイムラグが無いので、標準の時計ではわかりにくいですね。
予定を変更したとき
次は、予定を変更したときも通知が来るか確認します。
日付を変更して、保存してみます。
はい、同じように通知が来ました。
次は予定のタイトルを変更してみます。
またまた、同じように通知が来ました。
色々と試した結果、予定を少しでも変更すると、トリガーが実行されて通知が来るようです。
予定を削除したとき
最後に予定を削除したときを確認してみます。
はい、予想通り通知が来ました。
予定の新規作成でも、予定変更でも、削除でも、カレンダーに何かしら更新があると、トリガーが実行されるようです。
今のところ「予定を更新しました」しか選択がないので、予定を作成しても、削除しても同じように動作します。
今後の仕様変更でイベントの種類が増えることを期待したいですね!
まとめ
今回は、Google Apps Script のトリガーにGoogleカレンダーの予定変更を設定したときの、トリガーの動作を確認しました。
カレンダーが1つの時はこれでもいいですが、複数になると対応できません。
そこで次回は、複数のGoogleカレンダー更新に対応するトリガー設定とスクリプトについてお伝えします。