カレンダーのイベントのLINKを取得したくて調べていて、Google Apps ScriptのCalendar Serviceで取得できるかと思いきや取得するmethodが見つからず、Google Calendar API を利用すると取得できたため、今回はその方法を書いていきます
- Google Calendar API を有効にする
- htmlLinkを取得するコードを書く
- 実行する
1. Google Calendar API を有効にする
有効にする方法がわからない場合は以下の手順でAPIを有効にできます
1. スプレッドシートのツール→スクリプトエディタ...を選択します
2. リソース→Google の拡張サービス.. を選択します
3. プロジェクト名を任意で設定して「OK」をクリックします
4. Calender API の右のボタンが無効になっているので
クリックして「ON」にします
5. ↑の画面の Google API コンソール をクリックして「calendar」で検索して出て来る
Google Calendar APIを選択します
6.「有効にする」をクリックします
7. スクリプトエディタに戻って「OK」をクリックします
2. htmlLinkを取得するコードを書く
Advanced Calendar Service のlistNext10Events()を改造してhtmlLinkを取得するコードを書きました
コード.gs
function listNext10Events_with_link() {
var calendarId = 'primary';
var now = new Date();
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
singleEvents: true,
orderBy: 'startTime',
maxResults: 10
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
var link = event.htmlLink;
if (event.start.date) {
var start = event.start.date;
Logger.log([event.summary, start, link]);
} else {
var start = Utilities.formatDate(new Date(event.start.dateTime), 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm');
Logger.log([event.summary, start, link]);
}
}
} else {
Logger.log('No events found.');
}
}
|
意訳.gs
この処理は以下の処理を実行する
カレンダーのIDを設定する
現在日時を取得する
カレンダーIDを指定してイベントたちを取得する
現在日時以降で
繰り返しのイベントを個別に展開して
開始時刻で並べて
10件取得する
eventsのitemsが存在して長さが0より大きければ
events.itemsの数だけ以下を繰り返す
events.itemsを順番に取得する
htmlLinkでlinkを取得する
もしeventにstart.dateが存在すれば
start.dateを取得して
summaryとlinkと一緒にログに出す
start.dateが存在しなければ
event.start.dateTimeをフォーマットして
summaryとlinkと一緒にログに出す
eventsのitemsが存在しないか長さが0より大きくなければ
'No events found.'をログに出す
|
listNext10Events_with_link()を実行するとこれらからの予定が10件ログに出ます
var link = event.htmlLinkでは以下のようなリンクを取得できます
https://www.google.com/calendar/event?eid=EVENT_ID
ここで取得したリンクから開けるのはこの画面
編集画面を開きたい場合は
https://calendar.google.com/calendar/r/eventedit/EVENT_ID
とすれば良さそうなのでそれも次の記事で書きます
参考
Google Calendar API (calendar/quickstart/apps-script)
https://developers.google.com/google-apps/calendar/quickstart/apps-script
Calendar Service
https://developers.google.com/apps-script/reference/calendar/
maxResults
Maximum number of entries returned on one result page. By default the value is 100 entries. The page size can never be larger than 250 entries. Optional.
https://developers.google.com/google-apps/calendar/v3/reference/calendarList/list
Google Calendar API Usage Limits
The Google Calendar API has a courtesy limit of 1,000,000 queries per day.
https://developers.google.com/google-apps/calendar/pricing?hl=ja
Listing events
https://developers.google.com/apps-script/advanced/calendar
Events/Resource representations
https://developers.google.com/google-apps/calendar/v3/reference/events#resource