今回はアカウントに接続されているカレンダーのうち、カレンダー毎に割り振られた一意のカレンダーIDで特定のカレンダーを取得するメソッドを紹介します。
対象のカレンダーに直接アクセスができますので、数あるカレンダー取得メソッドの中で一番処理は速いと思います。
カレンダーIDから特定のカレンダーを取得するメソッド — getCalendarById
コピペで使えるサンプルコードを参照したい方はこちらをクリックすればサンプルコードまでジャンプできますので、手っ取り早くコードを確認したい方はクリックしてください。
まずは、カレンダーIDの確認方法から説明します。Google Apps ScriptのCalendarAppを使いこなせるようになるとプログラムでIDを取得(getId()メソッド)することも出来るようになりますが、今回は手動でIDを確認する方法をご紹介します。
まずはGoogleカレンダーにアクセスして、どのカレンダー名でも良いので、カレンダー名の右にある『︙』をクリックして下さい。
次に、表示されたメニューから『設定と共有』を選択します。
すると、カレンダーの設定画面に遷移します。下図のように画面左側の項目から『カレンダーの統合』をクリックして下さい。クリックすると右側の設定詳細がカレンダーの統合エリアに移動します。
移動したエリアに書いてあるカレンダーIDという部分がカレンダーのIDになります。
普段はあまり確認することはないかと思いますが、カレンダーにはこのように一つ一つIDが設定されています。今回のメソッドではこのIDを利用してカレンダーオブジェクトを取得出来ます。
それでは、メソッドの説明に移ります。
『 引数に入れる値 』
- id(カレンダーID) — 取得したいカレンダーのID
『 関連するメソッド 』
合わせて覚えたいリマインダー操作に関するメソッド
- createCalendar — 新規カレンダーを作成する
- getOwnedCalendarsByName — 自分がオーナーのカレンダーをカレンダー名で取得する
- getOwnedCalendarById — 自分がオーナーのカレンダーをカレンダーIDで取得する
- getAllOwnedCalendars — 自分がオーナーのすべてのカレンダーを取得する
- getDefaultCalendar — デフォルトカレンダーを取得する
- getCalendarsByName — カレンダー名からカレンダーを取得する
- getAllCalendars — すべてのカレンダーを取得する
- getId — カレンダーIDを取得する
getCalendarById(id)サンプルコード
//カレンダーIDからカレンダーを取得するコード function sampleCodeForGetCalendarById() { var id = "calendarId"; //ご利用の際はご自身のアカウントに紐付けられているカレンダーのIDに置き換えて下さい。 try { var calendar = CalendarApp.getCalendarById(id); var calendarName = calendar.getName(); console.log(calendarName); } catch (e) { console.log("カレンダーIDが正しくありません"); } }
『 変数の説明 』
id = カレンダーIDを代入
calendar = カレンダーIDを指定したカレンダーオブジェクトを代入
calendarName = カレンダーの名前を代入
『getCalendarById(id)サンプルコード』に上記サンプルスクリプトを記載したスクリプトがありますので、アクセスしてみてください。サンプルスクリプトでは、カレンダーIDが正しくないので、自分でスクリプトファイルを作成して、サンプルスクリプトのコードをコピーして、IDを置き換えたあとに▶ボタンをクリックしてプログラムを実行してみましょう。
指定したIDがあれば対象のカレンダー名が実行ログに出力されます。IDがなければ「カレンダーIDが正しくありません」というメッセージが出力されます。
『スクリプトの説明』
変数calendarにはカレンダーIDで指定したカレンダーオブジェクトが格納され、getName()メソッドを使ってカレンダーオブジェクトからカレンダー名を取得して変数calendarNameに代入し、console.log(calendarName)でログにカレンダー名を出力させています。
カレンダーを取得する他のコードと比べ、対象のカレンダーに直接アクセスができますので、処理速度という観点では一番速いメソッドであると思います。カレンダー取得のための他のメソッドは複数のカレンダーを配列で取得するため、カレンダーの一つ一つを展開するためにはループ処理などを行う必要があるため、処理速度がほんの少しだけ遅くなります。
まとめ
今回のコードでは、カレンダーIDを自分で指定し、特定のカレンダーオブジェクトを取得するメソッドをご紹介しました。
カレンダーに予定を作ったりする場合にはカレンダーを取得することが起点になりますので、どのようにカレンダーを取得するかということはしっかりと覚えておきましょう。
コメント
コメント一覧 (4件)
[…] カレンダーIDの確認方法はこちらの記事に記載してあります。 […]
[…] getAllCalendars()メソッドでは表示されているカレンダーだけが取得されますので、非表示のカレンダーを表示させる時にはgetCalendarById()メソッドでカレンダーIDを指定するかgetCalendarsByName()メソッドでカレンダー名を指定して対象のカレンダーを取得してhiddenにfalseを指定して下さい。 […]
[…] ンダーIDを使って特定のカレンダーを取得するメソッドを紹介します。今回のメソッドはgetCalendarById()メソッドと似ていますが、getCalendarById()メソッドは他のアカウントがオーナーのカレン […]
[…] 今回のメソッドは、殆どのケースではgetCalendarById()メソッドと一緒に使うことが想定されます。スプレッドシートなどに用意したデータベースにカレンダーIDを格納しておけば一発で任意 […]