Google Apps Scriptでカレンダーを取得する方法

Google Apps Script

Google Apps Scriptでカレンダーを取得する方法をご紹介します。

ここでご説明するカレンダーとは、左側にある「マイカレンダー」のリストを指しています。

紹介する関数のみの利用場面はあまりないかもしれませんが、スクリプト内で「○○カレンダーの予定を取得する」など、どのカレンダーかを選択する場面には使うと思います。

GASでマイカレンダーからカレンダーを取得する

カレンダーの取得方法は、3つに分類できます。

  • デフォルトカレンダー
  • カレンダーID
  • カレンダー名

え…全部取得したいんだけど…というあなたのために、全取得のパターンも2つあります。

  • 所有しているカレンダー
  • 所有しているor閲覧しているカレンダー

それでは、順番に解説していきます。

デフォルトカレンダーから取得する

■メンバー

getDefaultCalendar()

デフォルトカレンダーとは、Googleのアカウント設定をしたときに最初から利用可能であるカレンダーのことです。

■サンプルスクリプト

今回は、getTimeZoneを使用しましたが、デフォルトカレンダーの情報(カラー・説明・イベントなど)を取得することが可能です。

■実行結果

デフォルトカレンダーのタイムゾーン「Asia/Tokyo」が取得できました。

※ログの表示方法:スクリプト画面「表示」タブ→「ログ」

 

カレンダーIDから取得する

■メンバー

getCalendarById(id)

カレンダーIDとは、それぞれのカレンダー固有のIDであり、設定画面から確認することができます。

■サンプルスクリプト

※カレンダーID(id)の部分は、対象カレンダーの「オーバーフローメニュー(たてに・が3つ)」をクリック→設定と共有→「カレンダーの統合」から取得できます。

 

■実行結果

カレンダー名である「test」が正しく取得できました。

※ログの表示方法:スクリプト画面「表示」タブ→「ログ」

カレンダー名で取得する

■メンバー

getCalendarsByName(name)

実は、同じ名前でカレンダーを複数作成が可能です。

つまり、カレンダー名でカレンダーを取得する場合は、対象のカレンダーが1つとは限りません。

例えば、事前にカレンダー名「test」「test」「TEST」の3つを用意しておきます。

■サンプルスクリプト

 

■実行結果

カレンダー名の小文字と大文字を区別しないため、取得したカレンダー数「3」が取得できました。

※ログの表示方法:スクリプト画面「表示」タブ→「ログ」

「length」と聞くと「文字列の長さ」を思い浮かべますが、カレンダーの個数を返すのが、個人的に違和感です。

所有しているカレンダーを取得する

■メンバー

getAllOwnedCalendars()

所有しているカレンダーとは、以下が対象となります。

  • デフォルトカレンダー
  • 自分が作成したカレンダー
  • 他のユーザから共有され、「特定のユーザとの共有:変更および共有の管理権限」設定となっているカレンダー

次の場合、4つのカレンダーがその条件に当てはまります。

■サンプルスクリプト

■実行結果

先ほどの条件に当てはまる4つが表示されており、所有しているカレンダーをすべて取得できました。

※ログの表示方法:スクリプト画面「表示」タブ→「ログ」

所有しているor閲覧しているカレンダーを取得する

■メンバー

getAllCalendars()

所有しているor閲覧しているカレンダーとは、一言でいうとリストにあるカレンダーすべてです!

次の場合、6つのカレンダーがその条件に当てはまります。

※ToDoリスト、リマインダーは含まれません!

■サンプルスクリプト

■実行結果

リストに表示されているカレンダーをすべて取得できました。

※「birthday」は、連絡先から取得しているため「Contacts」と表示されています。

※ログの表示方法:スクリプト画面「表示」タブ→「ログ」

 

GASでタスクとリマインダーの取得方法

カレンダーの取得はわかったけど、タスクとリマインダーは取得できないの?

私も疑問に思い、調べてみました。

タスクとリマインダーの情報を取得する

カレンダーの関数ではなく、タスクやリマインダーは、APIの設定を変えたり、他の関数を使用したりすれば、実行できるみたいです。

これはまた別の記事でご紹介します。

まとめ

Google Apps Scriptでカレンダーを取得する方法をご紹介しました。

このカレンダーを取得した情報をもとに、イベントの取得や追加を実施することができます。

ぜひ、お試しください!

コメント

タイトルとURLをコピーしました