終日予定の終了日を取得— getAllDayEndDate()
今回のメソッドは、プログラムを使って終日のカレンダーイベント(予定)の最終日を取得するメソッドを紹介します。
終日予定が複数日にまたがって設定されている場合等に使える終日予定の最終日を取得するメソッドになります。終日予定ではない予定に対してこちらのメソッドを使用するとエラーとなります。
終日予定であれば予定終了日の次の日午前0時が取得されます。
こちらのメソッドに似たメソッドにgetEndTime()というメソッドがあります。2つのメソッドの違いはタイムゾーンの違いになります。
getAllDayEndDateはスクリプトに設定されたタイムゾーンを基準に日付の取得が行われます。一方、getEndTimeはカレンダーに設定されたタイムゾーンを基準に日付の取得が行われます。どちらも同じタイムゾーンを設定していれば結果は同じになりますが、設定が違う場合は結果に違いが出る可能性がありますのでこの点に注意してください。
使い方はどちらも同じになりますので、こちらのページに2つのサンプルコードを記載します。ただし、getEndTimeは終日予定でなくても使用することができます。
『 引数に入れる値 』
今回のメソッドに関しては引数は必要ありません。
getAllDayEndDate()
//終日予定の最終日の次の日の0時を取得するコード(スクリプトのタイムゾーン基準) function sampleCode1() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); for (var i in events) { var event = events[i]; /*イベントIDで指定するときには下記のコード var eventId = events[i].getId(); var event = calendar.getEventById(eventId); */ if (event.isAllDayEvent()) { var endDate = event.getAllDayEndDate(); console.log(endDate); } } }
『 変数の説明 』
calendar = デフォルトカレンダーを取得
date = プログラム実行日を代入
events = プログラム実行日に作成済みのイベントを取得
endDate = 終日予定の最終日を代入
スクリプトができたら▶ボタンでプログラムを実行してみましょう。プログラムが終了すれば実行した日にデフォルトカレンダーに作成済みの終日予定があればその予定の最終日を取得してログに表示します。
次のコードは終日予定以外の予定についても終了時刻を取得できます。終日予定の場合は先述した通り、カレンダーに設定したタイムゾーンを基準に日時が取得されます。スクリプトのタイムゾーンとカレンダーのタイムゾーンが別に設定されている場合は注意が必要です。
getEndTime()
//終日予定の終了時刻を取得するコード(カレンダーのタイムゾーン基準) function sampleCode2() { var calendar = CalendarApp.getDefaultCalendar(); var date = new Date(); var events = calendar.getEventsForDay(date); for (var i in events) { var event = events[i]; /*イベントIDで指定するときには下記のコード var eventId = events[i].getId(); var event = calendar.getEventById(eventId); */ var endDate = event.getEndTime(); console.log(endDate); } }
まとめ
今回はプログラム的に終日予定の最終日を取得するメソッドを紹介しました。工程管理のシステムなどで使えそうな気がしますね。ぜひ使い方を覚えておきましょう