【コピペで使える】GASで他アカウントのカレンダーを追加してみる

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

他アカウントのカレンダーを自分のカレンダーに追加する — subscribeToCalendar

今回のメソッドでは自分がアクセスできる状態の他のアカウントのカレンダーを自分のカレンダーに追加登録する方法を紹介します。正直あまり使用イメージが湧いてこないのでどの場面で使ったら良いのかがわかりませんが、公式リファレンスで紹介されていますのでこちらのページでもご紹介します。

それでは、説明を始めます。

  1. subscribeToCalendar(id)
  2. subscribeToCalendar(id, options)

『 引数に入れる値 』

  • id(文字列) — 登録したいカレンダーIDを指定
  • options(オブジェクト)— 追加項目を指定
    • color — カレンダーの色 (文字列)
    • hidden — true / false
      • (trueにするとカレンダーは作成されますがリストに表示されません)
    • selected — true / false
      • (trueにすると予定が表示される状態でカレンダーが作成されます。true/falseどちらの場合もリストには表示されます)

subscribeToCalendar(id)

サンプルコード1
//カレンダーを追加登録するコード
function sampleCode1() {
  var id = "h349j2dgs3rf6pj9f6v318qnqo@group.calendar.google.com"; //一般公開している管理者のカレンダーID
  CalendarApp.subscribeToCalendar(id);
}

『 変数の説明 』

id = 一般公開している私のカレンダーIDを指定

スクリプトをコピーして▶ボタンでプログラムを実行してみましょう。実行が終了したらカレンダーページを更新してみて下さい。私のカレンダーであるMade by GASというカレンダーが一覧に表示されていると思いますので、ご確認下さい。

subscribeToCalendar(id, options)

サンプルコード2
//カレンダーを追加登録するコード
function sampleCode1() {
  var id = "h349j2dgs3rf6pj9f6v318qnqo@group.calendar.google.com"; //一般公開している管理者のカレンダーID
  var options = {
    color: CalendarApp.Color.RED,
    hidden: false,
    selected: true
  }
  CalendarApp.subscribeToCalendar(id, options);
}

『 変数の説明 』

id = 一般公開している私のカレンダーIDを指定
options = 色や表示設定を指定する設定項目を指定

まとめ

今回は、他のアカウントのカレンダーをプログラムを使って自分の予定に入れるコードを紹介しました。
私は使う機会があまり思い浮かびませんが、なにか使えるものを考えた方はぜひ私にもアイディアを教えてください(笑)
すべてのサンプルコードはコピーしてスクリプトエディタに貼り付けることでそのまま利用が可能です。

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

SNSでもご購読できます。

商標および、登録商標について

Googleおよび、Googleロゴおよび、Googleドライブおよび、Googleドキュメントおよび、Googleフォトおよび、Googleスプレッドシートおよび、Googleサイトおよび、GoogleスライドおよびGmailおよび、Googleマップおよび、Googleタスクおよび、Google WorkspaceはGoogle LLCの登録商標です。

本サイトのコンテンツはいかなる場合においても、Googleから公式に提携及び承認されているわけではありません。

 

 

コメント

  1. こーてん より:

    CalendarApp.getCalendarById(element)で取得できるカレンダーは
    実行者のGoogleカレンダーの「他のカレンダー」に表示されているカレンダーのみ、のようなので、困っていたところ、このページにたどり着きました。

    ありがとうございます!

    ただし、getCalendarById利用後は「他のカレンダー」から非表示にするのではなく、削除したいのですが、そのような関数は用意されていないと理解しており、引き続き調査しているのですが、ご存知でしたらお教えください!

    1. admin より:

      追記ですが、こちらのヘルプページで補足します。

      https://support.google.com/calendar/answer/37188?co=GENIE.Platform%3DDesktop&oco=0

      『リストからカレンダーを完全に削除する』と書いてある項目が今回私がご紹介したunsubscribeFromCalendar()メソッドに相当します。

      『カレンダーを完全に削除する(元に戻せません)』と書いてある項目がdeleteCalendar()メソッドに相当します。

      削除する権限まで含めてプログラム実行者アカウントに共有されていればdeleteCalendar()メソッドも利用できますが、カレンダーのオーナーや他の共有者もアクセスができなくなりますので、利用の際はご注意下さい。

      1. こーてん より:

        unsubscribeFromCalendarでできました。
        丁寧な解説ありがとうございました!

        1. admin より:

          解決できたようで良かったです。

          CalendarApp以外でも解説がほしいメソッドがあれば優先的に更新しますので、コメントや問い合わせフォームでいつでもご連絡下さいね。

          コメントありがとうございました。

  2. admin より:

    自分のアカウントで削除権限のないカレンダーの場合はカレンダーを削除するdeleteCalendar()メソッドではエラーになってしまいますので、代わりにunsubscribeFromCalendar()メソッドを使用すれば良いかと思います。

    var calendar = CalendarApp.getCalendarById(“対象のカレンダーID”);
    calendar.unsubscribeFromCalendar();

    これで自分のアカウントから対象のカレンダーが見れなくなると思います。(カレンダーのオーナーアカウントからは削除されませんが、自分のアカウントからはアクセスができなくなります)

    繰り返しになりますが、deleteCalendar()メソッドの場合はカレンダーを削除するメソッドのため、権限がない限りは処理途中でエラーになってしまいます。

    ご質問の答えになっていますでしょうか?

    スマホからの書き込みなので、コードのコピペでエラーが出たら申し訳ない。

admin へ返信する コメントをキャンセル

*