Google Calendar Event List
Accessing to Google Calendar and retrieves a list of events (schedules) registered during the specified time period. In combination with Workflow, it will be possible to get schedule of next week collectively, and notify (announce) them by email.
2017 © Questetra, Inc. (MIT License)
  1. Get Secret: https://console.developers.google.com/apis/dashboard
  2. Config [OAuth 2.0 Setting] (scope) https://www.googleapis.com/auth/calendar.readonly
Configs
  • A: Set OAuth2 Config Name (at [OAuth 2.0 Setting]) *
  • B: Set CalendarID (e.g japanese__ja@holiday.calendar.google.com) *
  • C: Select DATE DATA for Start Date *
  • D: Select DATE DATA for End Date *
  • E: Set Timezone of Date Data (e.g -07:00) *
  • F: Select STRING DATA for Events List (update) *
  • X: Select STRING DATA for Access Log (update)
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

  • Refer to the following page for Calendar ID
    • [Calendar Settings] > [Calendar Address]
  • You need to register Project at Google API Manager beforehand (Scope: “https://www.googleapis.com/auth/calendar”)
  • The Start Date C ‘ and the End Date D’ are specified in UTC with the time zone entered in E

See also

%d bloggers like this: