🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

2107閲覧

GASでカレンダーの公開URLを取得する方法はありますか?

EJROII

総合スコア20

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2021/03/07 16:56

編集2021/03/08 05:51

作成したカレンダーの「公開URL」を自動で取得したいと思っております。

CalendarApp.createCalendar(name)を実行して、新規カレンダーを作成した後に
そのカレンダーが持つ「公開URL」を取得するメソッドはありますでしょうか?
リファレンスを見る限り見当たりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

calendarクラスから公開カレンダーを一発で取り出すメソッドはないようです。

ただし解決策はあり、公開カレンダーのURLは、固定の文字列にカレンダーIDの一部を差し込むことで構成されています。
下の変数URLが公開URLになります。

var calendarId = "カレンダーのID" var before = "https://calendar.google.com/calendar/embed?src=" var after = "%40group.calendar.google.com&ctz=Asia%2FTokyo" var middle = calendarId.replace("@group.calendar.google.com","");) var url = before + middle + after;

投稿2021/03/08 07:42

編集2021/03/08 08:05
EJROII

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

GASにはgetAllOwnedCalendars()という,ユーザーが所持している全カレンダーを取得するメンバーが存在します.このメンバーはカレンダーを配列で取得するため,スプレッドシートか何かで直近のカレンダーを保持しておき,差分を検知したらメールかポップアップかで通知するという方法がとれると思います(ユーザーに紐づいたIDのため,取得したいカレンダーの作成者が複数になると厳しいかもしれません).
もちろん過去のものを残していると差分が必ず発生するため,スクリプトの起動時など特定の日時を範囲の端点にする必要があります.

肝心のトリガーですが,私の調べた限りではカレンダーの作成をトリガーにする方法が見つけられませんでした.即時性には欠けますが,トリガーは時間指定ができますので,毎時00分と30分にこのスクリプトを動かす,のような形でなら実現可能だと思います.(このため,トリガーの起点の間に作成され終了したイベントのIDは取得できません)

投稿2021/03/08 00:28

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EJROII

2021/03/08 05:49

ありがとうございます。 私の理解が間違っていたら大変申し訳ないのですが、少し私の欲しい回答とずれているかもしれないです。 私が欲しいのは、Calendarクラスに対して、何らかのメソッドを実行するとカレンダーが持つ公開URLを取得できないかになります。 リファレンスを見る限り、そのようなメソッドが見当たらず やり方をご存知であれば教えていただければと思います。
退会済みユーザー

退会済みユーザー

2021/03/08 06:27

そういうことだったのですね.calendarEventの共有URLだと取り違えて回答しておりました. (公開URLはIDに固定文字列を付与したものですが,そこのずれではありませんよね?) カレンダーIDはcreateが終わって初めて生成されるものなので,createCalendarのメソッド内でIDを取得することはできません.上記の回答のようになりますが,実行前にgetAllCalendarsとgetIdで現状のIDを取得し,実行後に同一操作を行い差分をみるのが一番簡単なのではないでしょうか.
EJROII

2021/03/08 07:26

私も説明の仕方は悪く申し訳ありませんでした。 公開URLは固定文字列に、各カレンダーのIDの一部を取り付けることで構成されているのですね! 直接的に公開URLを取り出すメソッドがなくても、固定の公開URLを自動で生成することができる方法が分かりました。 ありがとうございました!
退会済みユーザー

退会済みユーザー

2021/03/08 08:14

カレンダー自体を取得できれば,あとは質問者さんの書かれたスクリプトでやりたいことができると思います.これから生成されるイベントやファイルに対して操作の予約のようなことができれば便利なのですけどね.解決してよかったです.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問