今回のメソッドは、プログラムを使ってカレンダーイベント(予定)にリマインダーを追加する3つのメソッドを紹介します。リマインダーの追加にはEメールリマインダー、ポップアップリマインダー、そしてSMSリマインダーがあり、それぞれ、addEmailReminder()、addPopupReminder()、addSmsReminder()を使うことでリマインダーを予定にプログラム的に追加することができます。
カレンダーイベントにリマインダーを追加するメソッド— add****Reminder()
コピペで使えるサンプルコードを参照したい方はこちらをクリックすればサンプルコードまでジャンプできますので、手っ取り早くコードを確認したい方はクリックしてください。
それでは、早速説明を始めます。3つのメソッドはリマインドの受け取り方が違うだけで、プログラムの使用方法は全く同じになります。
-
- addEmailReminder(minutesBefore)
- Gmailアドレス宛にEメールが送られてきます。
- addPopupReminder(minutesBefore)
- デスクトップの通知を許可していれば通知が送られてきます。
- addSmsReminder(minutesBefore)
- 設定した電話番号宛にSMSで通知が送られてきます。
- addEmailReminder(minutesBefore)
『 引数に入れる値 』
1つの予定に対して、リマインダーを設定できる上限数は5個までになります。すでに5個のリマインダーが設定されている場合や指定することができない範囲の数値を指定した場合はエラーになります。返り値はそのままのイベントオブジェクトが返されるので、メソッドチェーンでさらに他のメソッドの処理を行うこともできます。
ちなみに、設定する際の単位は分単位となり、5分前から4週間前までを設定することができます。毎回計算するのも面倒ですので、利用する際は変数に計算式を入れておくと良いかもしれません。
var hour = 60;
var day = 60 * 24;
var week = day * 7;
このように設定しておけば、わざわざ1週間って何分だ?などと計算する必要もなくなると思います。実際に設定する場合は下記のように計算式を作ることになるでしょう。
var minutesBefore = 5 * hour; //5時間前を設定
var minutesBefore = 3 * day; //3日前を設定
var minutesBefore = 4 * week; //4週間前
プログラムを組むならできるだけ作成する時間も短縮できるように進めたいですね。簡単に分数がわかるものについてはわざわざこんなことをする必要はないかと思いますが、少し大きい数字になる場合には変数に格納して使いまわしてしまいましょう。
設定したリマインダーは指定の時間が過ぎても自動的には削除がされませんので、たくさんのリマインダーを設定したい場合はどこかのタイミングで削除しながら使用することになるでしょう。
削除するためのメソッドは『【コピペで使える】GASで予定のリマインダーをすべて削除してみる』の記事で紹介していますが、リマインダーは1つずつ削除する方法がありませんので、設定されているリマインダーは一括で削除されます。
もし1つずつ削除させたいという要望があれば、『【コピペで使える】GASで予定のリマインダーを取得してみる』で紹介している方法で一度設定されているリマインダーの通知時間(こちらも予定開始時間の分数で取得される)を取得し、リマインダーをすべて削除したあとに、削除したい予定を除いて本記事でご紹介しているリマインダー設定方法にて再度リマインダーを設定するというような流れになります。ちょっと複雑ですね。
ちなみに、SMSリマインダーについては、2019年1月7日にGSuiteでのSMSリマインダーが終了したことに伴い使えなくなっているかもしれません。コードはエラーになりませんが、リマインダーは現状送られてこないと思われます。今後廃止がされる可能性があります。(執筆時点)
『関連するメソッド』
合わせて覚えたいリマインダー操作に関するメソッド
- get****Reminders — 予定のリマインダーを取得する
- removeAllReminders — 予定のリマインダーをすべて削除する
- resetRemindersToDefault — 予定のリマインダーを初期値に設定する
addEmailReminder(minutesBefore)サンプルコード
//メールリマインダーを追加するコード function sampleCodeForAddEmailReminder() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); var minutesBefore = 5; //リマインダーを指定したい分数を5〜40320の間で指定(最短5分前から最長4週間前を指定可能) for (var i in events) { events[i].addEmailReminder(minutesBefore); /*イベントIDで指定するときには下記のコード var eventId = events[i].getId(); var event = calendar.getEventById(eventId); event.addEmailReminder(minutesBefore); */ } }
『 変数の説明 』
calendar = デフォルトカレンダーを取得
date = プログラム実行日を代入
events = プログラム実行日に作成済みのイベントを取得
minutesBefore = リマインダーを設定する分数を指定
addPopupReminder(minutesBefore)
//ポップアップリマインダーを追加するコード function sampleCodeForAddPopupReminder() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); var minutesBefore = 5; //リマインダーを指定したい分数を5〜40320の間で指定(最短5分前から最長4週間前を指定可能) for (var i in events) { events[i].addPopupReminder(minutesBefore); /*イベントIDで指定するときには下記のコード var eventId = events[i].getId(); var event = calendar.getEventById(eventId); event.addPopupReminder(minutesBefore); */ } }
今度はブラウザ上にポップアップしたりスマホ等ではプッシュ通知を行うためのリマインダーを追加することができます。
使い方はメールリマインダー追加と全く同じですので、メールリマインダーを追加するコードで『addEmailReminders』と書いた部分を『addPopupReminders』に置き換えるだけで使うことができます。
addSmsReminder(minutesBefore)
//SMSリマインダーを追加するためのコード(2019年12月現在通知送られてこず) function sampleCodeForAddSmsRiminder() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); var minutesBefore = 49; //リマインダーを指定したい分数を5〜40320の間で指定(最短5分前から最長4週間前を指定可能) for (var i in events) { events[i].addSmsReminder(minutesBefore); /*イベントIDで指定するときには下記のコード var eventId = events[i].getId(); var event = calendar.getEventById(eventId); event.addSmsReminder(minutesBefore); */ } }
スクリプトができたら▶ボタンでプログラムを実行してみましょう。プログラムが終了すれば実行した日にデフォルトカレンダーに作成済みの予定にリマインダーが追加されます。追加されたリマインダーを確認する方法は予定をクリックして詳細を確認してみてください。
まとめ
今回はプログラムを使って、予定にリマインダー追加する3種類のメソッドを紹介しました。これで、プログラムでリマインダーが任意の予定にリマインダーを自由に設定する事ができるようになりました。活用例としては、スプレッドシートに設定した情報を元に、予定に一括でリマインダーを設定したりする場合には有効だと思います。あとは、自前のシステムでUI画面上から任意の予定に任意のリマインダーを設定するなどといったことにも使えるのかなと思います。皆様ぜひ活用してみてください。