#はじめに
@satoshiks です
Apps Scriptでカレンダーの予定を取得する時に、Calendar ServiceではイベントのIDが取得できなかったのでCalendar APIを利用して取得した時のメモです
イベントの編集画面への直リンクを作りたくてイベントIDを取得したかった
#これで取得できた
Google Calender APIを有効にして以下のコードを実行すると取得できました
function get_event_id() {
var events = Calendar.Events.list("primary", {
timeMin: new Date().toISOString(),
singleEvents: true,
orderBy: "startTime",
maxResults: 1
});
var link = events.items[0].htmlLink;
var event_id = link.split("eid=")[1];
Logger.log([link, event_id]);
}
##イベントの編集画面への直リンク作成
htmlLinkは編集画面へのリンクではないため、編集画面への直リンクを作るには https://calendar.google.com/calendar/r/eventedit/イベントID のようにイベントIDをくっつけると作成できました
###htmlLinkで開く画面
https://www.google.com/calendar/event?eid=イベントID で開く画面
###イベントの編集画面
https://calendar.google.com/calendar/r/eventedit/イベントID で開く画面
##htmlLink以外に取得できる項目
Events/Resource representations
##Calendar APIを有効にする手順
- スクリプトエディタを開く
- 上部のメニューからリソースを開く
- Google の拡張サービス...を開く
- Calendar APIを「ON」にする(そしてOKをクリックする)
- Google API コンソールのリンクをクリックする
- Calendarで検索してGoogle Calendar APIを選択する
- 「有効にする」ボタンをクリックする
手順4でOKをクリックするとモーダルが閉じるので、7までやってからOKをクリックするとよいかも
#取得できなかったコード
最初はこれで取得できると思っていましたが、hoge@google.comというidが返ってきました
欲しいidはこれじゃなかったのでいろいろ調べてCalendar APIにたどり着いたのでした
function get_event_id(){
var calendar = CalendarApp.getCalendarById("primary");
var events = calendar.getEventsForDay(new Date());
var events0_id = events[0].getId();
Logger.log(events0_id);
}
#おわりに
Calendar Serviceで実現できそうな気もしながら色々調べて試してみた結果できなかったため、APIを利用して取得してみました
本当はできるんじゃないかとまだちょっと思っていますが、APIで実現できたので今回はその方法を書いてみました
#参考