今回のメソッドは、予定にリマインダーが設定されている場合に、リマインダーが予定の何分前に設定されているかを取得するメソッドをご紹介します。予定に設定できるリマインダーは全部で2種類(以前は3種類)ありますが、それぞれのリマインダーに対して予定の何分前に設定するかを取得するメソッドが用意されています。今回の記事では、その取得方法について説明します。
予定のリマインダーを取得する— get****Reminders()
コピペで使えるサンプルコードを参照したい方はこちらをクリックすればサンプルコードまでジャンプできますので、手っ取り早くコードを確認したい方はクリックしてください。
以前執筆した記事に、リマインダーを設定するadd****Remindersの使い方を説明した『【コピペで使える】GASでカレンダーにリマインダーを追加してみる』という記事があります。この記事でも説明している通り、リマインダーには『メール』と『通知』そして『SMS』の3つがあります。SMSは現状利用できないようですが、最初の2つのリマインダーについては、カレンダー上で手動で設定することもできますし、もちろんGASを使ったプログラムでも設定が可能です。
今回のメソッドはそれぞれのリマインダーに対して予定の何分前に設定されているのか配列で取得することができます。リマインダーは『メール』『通知』合わせて最大で5つまで設定可能ですので、配列の中には最大で5つの情報が格納されることになります。
配列の順番は最初にアラートが出されるリマインダーから順番に格納されていきます。設定した順番ではありませんので、わかりやすく親切ですね。
Googleカレンダー上では、単位が『分』『時間』『日』『週』が設定できますが、今回のメソッドで取得される取得される単位はどの単位で設定したとしても『分』単位で取得されます。
それでは、サンプルコードを参考に使い方を学んでいきましょう。
『 引数に入れる値 』
今回のメソッドに関しては引数は必要ありません。
『関連するメソッド』
合わせて覚えたいリマインダー操作に関するメソッド
- add****Reminder — 予定にリマインダーを追加する
- removeAllReminders — 予定のリマインダーをすべて削除する
- resetRemindersToDefault — 予定のリマインダーを初期値に設定する
getEmailReminders()サンプルコード
//メールリマインダーの設定分数を取得するコード function sampleCodeForCalendarAppGetEmailReminders() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); for (var i in events) { var event = events[i]; console.log(event.getEmailReminders()); } }
『 変数の説明 』
calendar = デフォルトカレンダーを取得
date = プログラム実行日を代入
events = プログラム実行日の予定を取得
event = 個々予定を取得
スクリプトができたら▶ボタンでプログラムを実行してみましょう。今回のコードではプログラム実行日の予定の取得するコードを書いてみました。Googleカレンダーには手動で下記の通り3つのリマインダーを設定しました。
こちらを設定した上で、getEmailReminders()メソッドを実行してログを確認しました。
上記のスクリーンショットのように配列に数字が出力されています。
1番最初のリマインダーは予定の30時間前に設定されています。30時間を分に換算すると、30(時間) × 60(分) = 1800(分)
2番目のリマインダーは予定の10時間前設定されています。分換算すると、10(時間) × 60(分) = 600(分)
3番目のリマインダーは予定の10分前に設定されていますので、そのまま10(分)
がログに表示されています。今回のメソッドの注意点としては、取得できる単位は必ず分単位になるという事です。設定した単位が何であれ、取得できる結果は必ず分単位で取得されることに注意して下さい。
getPopupReminders()サンプルコード
//通知リマインダーの設定分数を取得するコード function sampleCodeForCalendarAppGetPopupReminders() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); for (var i in events) { var event = events[i]; console.log(event.getPopupReminders()); } }
今度はブラウザ上にポップアップしたりスマホ等ではプッシュ通知リマインダーの情報を取得することができます。こちらもメールリマインダーと同じように出力結果は配列で分単位の設定分数が取得されます。
使い方は全く同じですので、メールリマインダーを取得するコードで『getEmailReminders』と書いた部分を『getPopupReminders』に置き換えるだけで使うことができます。
リマインダーの取得は種類によって別れていますので、メールと通知両方のリマインダーを設定している場合はそれぞれのメソッドを実行する必要があります。
出力ログについては、メールリマインダーを取得するコードと同じになりますので、割愛します。
getSmsReminders()サンプルコード
//SMSリマインダーの設定分数を取得するコード function sampleCodeForCalendarAppGetSmsReminders() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); for (var i in events) { var event = events[i]; console.log(event.getSmsReminders()); } }
執筆時点では、公式リファレンスにも表記がありますので、こちらでも念の為使い方をご紹介しますが、こちらのメソッドを使用しても結果は空の配列がログに表示されるだけになります。もしSMSリマインダーが使えればこちらのメソッドも前述の2つのメソッドと同じように使えるのでしょうが、現状は使えないようです。
長年Googleカレンダーを使っていますが、通知の設定でSMSでの通知設定を見た記憶がありません。どこかのタイミングで使える機会があったのでしょうか?もしご存じの方いたらコメントで情報提供頂ければと思います。
まとめ
今回は予定に設定されたリマインダーをプログラムで取得するget****Reminders()メソッドのご紹介をしました。これで、プログラムでリマインダーが予定開始時間の何分前に設定されているのかを正確に把握することができます。活用例としては、自前の予約システムなどを構築する際に、設定されている予定のリマインダーを取得して設定状況をUI画面上に表示するときなどでしょうか?単純なシステムでリマインダーを取得することはあまり想像できませんので、かなり複雑なシステムを構築する際に使うことになるのかなと思います。