Google Calendar イベントリスト

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

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. CalendarIdをセットしてください japanese__ja@holiday.calendar.google.com単一行記述必須
    C. 参照期間の開始日が格納されている日付型データを選択してくださいデータ項目選択日付型必須
    D. 参照期間の終了日が格納されている日付型データを選択してくださいデータ項目選択日付型必須
    E. UTCとの時差をセットしてください (例 +09:00)単一行記述必須
    F. 予定リストが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_CalendarIdCalendarIdをセットしてください japanese__ja@holiday.calendar.google.com
    Cconf_DataIdC参照期間の開始日が格納されている日付型データを選択してください
    Dconf_DataIdD参照期間の終了日が格納されている日付型データを選択してください
    Econf_TimezoneUTCとの時差をセットしてください (例 +09:00)
    Fconf_DataIdF予定リストが格納される文字列型データを選択してください (更新)
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Google Calendar Events List via Calendar API v3 (ver. 20170801)
    // (c) 2017, Questetra, Inc. (the MIT License)
    
    //// == 工程コンフィグの参照 / 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 );
    

    • B’: Bに入力された Google Calendar ID *
    • C’: Cで選択したデータ項目に格納されている開始日
    • D’: Dで選択したデータ項目に格納されている終了日
    • Google Calendar B’ に登録されている C’ から D’ (UTC との時差 E’) の期間の予定が、F で選択したデータ項目に格納されます
    • 通信ログが X で選択したデータ項目に格納されます
    • *カレンダーIDは次のページを参照します
      • [カレンダー設定](Calendar Settings)>[カレンダーのアドレス](Calendar Address)
    • 事前に Google API Manager にてProject登録をしておく必要があります(Scope: “https://www.googleapis.com/auth/calendar”)
    • 開始日(C’)・終了日(D’)は、Eに入力されたUTCとの時差(タイムゾーン)で指定されます