初心者でもわかるGoogle Apps Script活用のススメ

【コピペで使える】GASでカレンダーの予定開始日時を取得してみる

今回は、プログラムを使って予定の開始時間や終日カレンダー予定の開始日を取得するgetAllDayStartDateとgetStartTimeの使い方を紹介しようと思います。

こちらのメソッドはアイディア次第でいろいろな使い方ができるメソッドだと思っています。例えば、1日の始めに、その日に調整されているスケジュールの開始時間をリマインダーとして送信するといったことや、以前とある店舗の予約管理システムを開発したことがあるのですが、同じ時間帯に予約できる予約枠には限りがあるため、予約開始時間と終了時間を取得して同じ時間帯に予約できる人数を制限したりといった処理で使ったことがあります。

その他にも、開始時間や開始日を絡めたシステムの自動化には色々と需要があると思いますので、覚えておいて損はないメソッドだと思います。

(終日)予定の開始日時を取得— getAllDayStartDate()とgetStartTime() 

コピペで使えるサンプルコードを参照したい方はこちらをクリックすればサンプルコードまでジャンプできますので、手っ取り早くコードを確認したい方はクリックしてください。

まずは、終日予定の開始日を取得するgetAllDayStartDateの説明から始めたいと思います。終日予定用のメソッドとなりますので、終日予定ではない予定に対してこちらのメソッドを使用するとエラーとなりますのでご注意ください。終日予定かどうかを確認したい場合は『【コピペで使える】GASで予定が終日予定かどうかを確認してみる』の記事で紹介しているisAllDayEventを使えば判断することができます。合わせて使うことでエラーを回避することができると思います。

終日予定であれば日付オブジェクトとして予定開始日の午前0時が取得されます。こちらのメソッドに似たメソッドにgetStartTime()というメソッドがあります。2つのメソッドの違いはいくつかありますが、下記に違いをまとめてみます。

getAllDateStartDate

  1. 終日予定にしか使うことができない
  2. 予定開始日の午前0時が日付オブジェクトとして取得できる
  3. スクリプトに設定されたタイムゾーンに依存

getStartTime

  1. 終日予定にも終日予定以外にも使うことができる
  2. 予定の開始日時が日付オブジェクトとして取得できる
  3. カレンダーに設定されたタイムゾーンに依存

このような違いがあります。

この中でも結果に大きな違いが出る可能性があるものがタイムゾーンに関する違いです。

getAllDayStartDateはスクリプトに設定されたタイムゾーンを基準に日付の取得が行われます。一方、getStartTimeはカレンダーに設定されたタイムゾーンを基準に日付の取得が行われます。どちらも同じタイムゾーンを設定していれば結果は同じになりますが、設定が違う場合は結果に違いが出る可能性がありますのでこの点に注意してください。

使い方はどちらも同じになりますので、こちらのページに2つのサンプルコードを記載します。ただし、getStartTimeは終日予定でなくても使用することができます。

    1. getAllDayStartDate()
    2. getStartTime()

『 引数に入れる値 』

今回のメソッドに関しては引数は必要ありません。

『 関連するメソッド 』

合わせて覚えたいカレンダー予定の操作に関するメソッド

getAllDayStartDate()サンプルコード

終日予定の開始日を取得するサンプルコード
//終日予定の開始日の0時を取得するコード(スクリプトのタイムゾーン基準)
function sampleCodeForGetAllDayStartDate() {
  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 startDate = event.getAllDayStartDate();
      console.log(startDate);
    }
  }
}

『 変数の説明 』

calendar = デフォルトカレンダーを取得
date = プログラム実行日を代入
events = プログラム実行日に作成済みのイベントを取得
startDate = 終日予定の開始日を代入

スクリプトができたら▶ボタンでプログラムを実行してみましょう。プログラムが終了すれば実行した日にデフォルトカレンダーに作成済みの終日予定があればその予定の開始日を取得してログに表示します。

次に紹介するのはgetStartTimeの使い方ですが、こちらは終日予定以外の予定についても開始時刻を取得できます。終日予定につかうgetAllDayStartDateの場合は先述した通り、カレンダーに設定したタイムゾーンを基準に日時が取得されます。スクリプトのタイムゾーンとカレンダーのタイムゾーンが別に設定されている場合は注意が必要です。

getStartTime()サンプルコード

(終日)予定の開始日時を取得するサンプルコード
//終日予定の開始時刻を取得するコード(カレンダーのタイムゾーン基準)
function sampleCodeForGetStartTime() {
  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 start = event.getStartTime();
    console.log(startDate);
  }
}

まとめ

今回はプログラム的に終日予定の開始日を取得するメソッドを紹介しました。2つのメソッドを紹介しましたが、使い方は同じですが、使い方に若干の違いがあることを頭に入れてもらえれば良いかなと思います。

Exit mobile version