LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Sunday, December 24, 2017

Googleカレンダーでイベントのlinkを取得する(htmlLink)

カレンダーのイベントのLINKを取得したくて調べていて、Google Apps ScriptのCalendar Serviceで取得できるかと思いきや取得するmethodが見つからず、Google Calendar API を利用すると取得できたため、今回はその方法を書いていきます

  1. Google Calendar API を有効にする
  2. htmlLinkを取得するコードを書く
  3. 実行する


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





Latest post

Extracting data from Google Sheets with regular expressions

Introduction Regular expressions are a powerful tool that can be used to extract data from text.  In Google Sheets, regular expressions ca...