【GAS】CalendarAppのgetEventByIdメソッドを完全マスター

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
icon_for_CalendarApp_ getEventById

任意のカレンダーイベン卜を取得するメソッド — getEventById

今回は任意のカレンダーイベントを取得するメソッドを紹介します。以前はイベントIDで予定を取得することができなかったという投稿がネット検索では未だに残っていますが、今ではイベントIDから予定に直接アクセスすることが出来るようになっています。

今回はこのメソッドの説明をしたいと思います。

まずは、イベントIDを取得する方法について簡単に説明しようと思いますが、イベントIDは手動で確認することが出来ません。(私は確認出来ていません)

そのため、プログラムで取得する必要があります。たとえば、新規予定をプログラムで作成した場合や、イベントオブジェクトに対してgetId()メソッドを使用することでIDを取得出来ます。

イベントIDを取得するメソッドはこちらで使い方を説明しています。

こうなるとあまり使用用途は多くないように思えるかもしれませんが、IDを別のデータベースに登録したりすることでカレンダーの予定オブジェクトへのアクセスが容易になります。

それでは、今回のメソッドの説明に移ります。

  1. getEventById(id)
  2. getEventSeriesById(id)

『 引数に入れる値 』

  • id(イベントID) — 取得したいイベントのID

getEventById(id)

サンプルコード1
//sampleCode1用のイベント作成関数
function createEvent() {
  var calendar = CalendarApp.getDefaultCalendar();
  var title = "getEventById()用の予定";
  var date = new Date();
  var id= calendar.createAllDayEvent(title, date).getId();
  var properties = PropertiesService.getScriptProperties();
  properties.setProperty("id", id);
}

//任意のカレンダーイベントにアクセスしてタイトルを取得するコード
function sampleCode1() {
  var properties = PropertiesService.getScriptProperties();
  var id = properties.getProperty("id");
  var event = CalendarApp.getEventById(id);
  var title = event.getTitle();
  Logger.log(title);
  properties.deleteProperty("id");
  event.deleteEvent();
}

『 変数の説明 』

今回は2つのコードから成立している関数ですが、createEventは予定をプログラムで作成してIDを格納するためのコードなので、今回関係のないコードもあるため割愛します。
id = イベン卜IDを代入
Event = カレンダーイベン卜オブジェクト
title = 予定のタイトルを代入

スクリプトができたら『関数を選択』というドロップダウンメニューから『createEvent』を選択して▶ボタンでプログラムを実行してみましょう。実行が終了したらデフォルトカレンダーを確認してみて、実行日に予定が入っているかどうかを確認して下さい。確認ができない場合はカレンダーページを再読込してみて下さい。

予定が確認出来たら、『関数を選択』から『sampleCode1』を選択して▶ボタンでプログラムを実行してみましょう。関数が実行されると、createEventで作成した予定にIDを指定してダイレクトにアクセスし、予定のタイトルを取得してログに表示します。コードをコピペして実行した場合には、『getEventById()用の予定』という予定タイトルが出力されます。

ログを出力した後はイベントIDを格納していた部分を削除し、予定自体も削除しています。

getEventById(id)

サンプルコード2
//sampleCode2用のイベント作成関数
function createEvent() {
  var calendar = CalendarApp.getDefaultCalendar();
  var title = "getEventSeriesById()用の予定";
  var startDate = new Date();
  var recurrence = CalendarApp.newRecurrence().addWeeklyRule();
  var id= calendar.createAllDayEventSeries(title, startDate, recurrence).getId();
  var properties = PropertiesService.getScriptProperties();
  properties.setProperty("id", id);
}

//任意の繰り返し予定にアクセスしてタイトルを取得するコード
function sampleCode1() {
  var properties = PropertiesService.getScriptProperties();
  var id = properties.getProperty("id");
  var event = CalendarApp.getEventSeriesById(id);
  var title = event.getTitle();
  Logger.log(title);
  properties.deleteProperty("id");
  event.deleteEvent();
}

『 変数の説明 』

今回も1つ目のコードと同じように、2つのコードから成立しているサンプルコードになります。使い方はgetEventByIdと変わりません。IDを指定すれば繰り返し予定のイベントオブジェクトが取得出来ますので、そのオブジェクトから様々な処理が行えます。
id = イベン卜IDを代入
Event = カレンダーイベン卜オブジェクト
title = 予定のタイトルを代入

スクリプトができたら『関数を選択』というドロップダウンメニューから『createEvent』を選択して▶ボタンでプログラムを実行してみましょう。実行が終了したらデフォルトカレンダーを確認してみて、実行日に予定が入っているかどうかを確認して下さい。確認ができない場合はカレンダーページを再読込してみて下さい。

予定が確認出来たら、『関数を選択』から『sampleCode2』を選択して▶ボタンでプログラムを実行してみましょう。関数が実行されると、createEventで作成した予定にIDを指定してダイレクトにアクセスし、予定のタイトルを取得してログに表示します。コードをコピペして実行した場合には、『getEventSeriesById()用の予定』という予定タイトルが出力されます。

ログを出力した後はイベントIDを格納していた部分を削除し、予定自体も削除しています。

『注意点』

上記2つのコードの注意点としては、getEventByIdでは繰り返し予定は取得できませんし、getEventSeriesByIdでも繰り返しではない予定は取得できずにエラーが帰ってきますのでご注意下さい。

まとめ

今回のコードは、予定IDを指定することで直接イベントオブジェクトにアクセスする方法を説明しました。イベントオブジェクトにアクセスすると、タイトルや、詳細説明、予定の開始日/終了日など予定に関連する様々な情報にアクセスすることが出来ます。

すべてのサンプルコードはコピーしてスクリプトエディタに貼り付けることでそのまま利用が可能です。

SNSでもご購読できます。

コメントを残す

*