LoginSignup
15
15

More than 5 years have passed since last update.

Google Calendar APIでイベントのIDを取得した話

Last updated at Posted at 2017-12-25

はじめに

@satoshiks です
Apps Scriptでカレンダーの予定を取得する時に、Calendar ServiceではイベントのIDが取得できなかったのでCalendar APIを利用して取得した時のメモです

イベントの編集画面への直リンクを作りたくてイベントIDを取得したかった

ここでいうイベントIDとは

スクリーンショット 2017-12-25 7.33.34.png

これで取得できた

Google Calender APIを有効にして以下のコードを実行すると取得できました

Code.gs
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 で開く画面
スクリーンショット 2017-12-25 8.38.16.png

イベントの編集画面

https://calendar.google.com/calendar/r/eventedit/イベントID で開く画面
スクリーンショット 2017-12-25 8.39.30.png

htmlLink以外に取得できる項目

Events/Resource representations

Calendar APIを有効にする手順

  1. スクリプトエディタを開く
  2. 上部のメニューからリソースを開く
  3. Google の拡張サービス...を開く
  4. Calendar APIを「ON」にする(そしてOKをクリックする)
  5. Google API コンソールのリンクをクリックする
  6. Calendarで検索してGoogle Calendar APIを選択する
  7. 「有効にする」ボタンをクリックする

詳しくはこちら

手順4でOKをクリックするとモーダルが閉じるので、7までやってからOKをクリックするとよいかも

取得できなかったコード

最初はこれで取得できると思っていましたが、hoge@google.comというidが返ってきました
欲しいidはこれじゃなかったのでいろいろ調べてCalendar APIにたどり着いたのでした

Code.gs
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で実現できたので今回はその方法を書いてみました

参考

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15