Google スプレッドシート: 範囲データ, 数値合計 (Google Sheets: Values, Sum Numbers)

Google Calendar にアクセスし、指定された期間に登録されているイベント(予定)の一覧を取得します。ワークフローとの組み合わせで、来週の予定を一括で取得し、メールで通知(告知)するといった使い方が可能です。

2017-08-01 © Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/googlecalendar-eventslist/

Configs
  • A: OAuth2通信許可設定名 (←[OAuth 2.0 設定]) *
  • B: CalendarIdをセットしてください japanese__ja@holiday.calendar.google.com *
  • C: 参照期間の開始日が格納されている日付型データを選択してください *
  • D: 参照期間の終了日が格納されている日付型データを選択してください *
  • E: UTCとの時差をセットしてください (例 +09:00) *
  • F: 予定リストが格納される文字列型データを選択してください (更新) *
  • X: 通信ログが格納される文字列型データを選択してください (更新)
Script
//// == 工程コンフィグの参照 / Config Retrieving ==
var oauth2  = configs.get( "conf_OAuth2" ) + "";
var calendarId  = configs.get( "conf_CalendarId" ) + "";
var timezone    = configs.get( "conf_Timezone" ) + "";

var dataIdC = configs.get( "conf_DataIdC" ); // returns key
var dataIdD = configs.get( "conf_DataIdD" ); // returns key
var dataIdF = configs.get( "conf_DataIdF" ); // returns key
var dataIdX = configs.get( "conf_DataIdX" ); // returns key

//// == ワークフローデータの参照 / Data Retrieving ==
var startDate = data.get( dataIdC ) + ""; // "YYYY-MM-DD"
var endDate   = data.get( dataIdD ) + ""; // "YYYY-MM-DD"

//// == 演算 / Calculating ==
// Set API Request
var apiRequest = httpClient.begin();
apiRequest.queryParam( "calendarId", calendarId );
apiRequest.queryParam( "orderBy", "startTime" );
apiRequest.queryParam( "singleEvents", "true" );
apiRequest.queryParam( "timeMax", endDate + "T23:59:59" + timezone ); // for request
apiRequest.queryParam( "timeMin", startDate + "T00:00:00" + timezone );
apiRequest.queryParam( "timeZone", timezone ); // Time zone for response

// Set OAuth2 Access Token
var token = httpClient.getOAuth2Token( oauth2 );
apiRequest.bearer( token );

// API Access
var accessLog = "";
var uri = "https://www.googleapis.com/calendar/v3/calendars/calendarId/events";
var response = apiRequest.get( uri );
var statusCode = response.getStatusCode() + "";
accessLog += "---GET request--- " + statusCode + "\n";
accessLog += response.getResponseAsString() + "\n";

// Retreive Response-JSON Properties
var calendarEventsStr = "";
if( statusCode == "200" ){
  var responseObj = JSON.parse( response.getResponseAsString() );
  for( var i = 0; i < responseObj.items.length; i++ ){
    if( "date" in responseObj.items[i].start ){
      // "date": "2017-07-24"
      calendarEventsStr += responseObj.items[i].start.date;
      calendarEventsStr += "\t(--:--):\t";
      calendarEventsStr += responseObj.items[i].summary; // 
    }else if( "dateTime" in responseObj.items[i].start ){
      // "dateTime": "2017-07-24T12:00:00+09:00"
      calendarEventsStr += responseObj.items[i].start.dateTime.substring(0,10);
      calendarEventsStr += "\t(" + responseObj.items[i].start.dateTime.substring(11,16) + "):\t";
      calendarEventsStr += responseObj.items[i].summary; // 
    }
    calendarEventsStr += "\n";
  }
}

//// == ワークフローデータへの代入 / Data Updating ==
retVal.put( dataIdF, calendarEventsStr );
if( dataIdX !== "" ){
  retVal.put( dataIdX, accessLog );
}

//retVal.put( "q_debugLog", debugLog );

Download

Capture

Notes

  • カレンダーIDは次のページを参照します
    • [カレンダー設定](Calendar Settings)>[カレンダーのアドレス](Calendar Address)
  • 事前に Google API Manager にてProject登録をしておく必要があります(Scope: “https://www.googleapis.com/auth/calendar”)
  • 開始日(C’)・終了日(D’)は、Eに入力されたUTCとの時差(タイムゾーン)で指定されます

See also

%d人のブロガーが「いいね」をつけました。