Google Sheets 2列データの一括取得

指定した Google Sheets の2列の値をそれぞれデータ項目に格納し、通信ログを文字型データ項目に格納します。

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. Spreadsheet ID が格納されている文字列型データor選択肢型データを選択してください(存在しない場合、エラー)データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    C. Sheet タイトルが格納されている文字列型データor選択肢型データを選択してください(存在しない場合、エラー)データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    D. 選択肢IDの領域情報が格納されている文字列型or選択肢型データを選択してください (例 "A2:A", "A:A")データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    E. 選択肢ラベルの領域情報が格納されている文字列型or選択肢型データを選択してください (例 "B2:B", "B:B")データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    F. 選択肢IDの一覧が格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)必須
    G. 選択肢ラベルの一覧が格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)必須
    H. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_DataIdBSpreadsheet ID が格納されている文字列型データor選択肢型データを選択してください(存在しない場合、エラー)
    Cconf_DataIdCSheet タイトルが格納されている文字列型データor選択肢型データを選択してください(存在しない場合、エラー)
    Dconf_DataIdD選択肢IDの領域情報が格納されている文字列型or選択肢型データを選択してください (例 "A2:A", "A:A")
    Econf_DataIdE選択肢ラベルの領域情報が格納されている文字列型or選択肢型データを選択してください (例 "B2:B", "B:B")
    Fconf_DataIdF選択肢IDの一覧が格納される文字列型データを選択してください (更新)
    Gconf_DataIdG選択肢ラベルの一覧が格納される文字列型データを選択してください (更新)
    Hconf_DataIdH通信ログが格納される文字列型データを選択してください (更新)
    // Batch to Get Data via Google Sheets API (ver. 20160921)
    // (c) 2016, Questetra, Inc. (the MIT License)
    
    // OAuth2 config
    // Authorization Endpoint URL: https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
    // Token Endpoint URL: https://accounts.google.com/o/oauth2/token
    // Scope: https://www.googleapis.com/auth/spreadsheets
    // Consumer Key: (Get by Google Developers Console)
    // Consumer Secret: (Get by Google Developers Console)
    
    //// == 工程コンフィグの参照 / Config Retrieving ==
    var oauth2 = configs.get( "conf_OAuth2" );
    var dataIdB = configs.get( "conf_DataIdB" ); // (returns Number)
    var dataIdC = configs.get( "conf_DataIdC" ); // (returns Number)
    var dataIdD = configs.get( "conf_DataIdD" ); // (returns Number)
    var dataIdE = configs.get( "conf_DataIdE" ); // (returns Number)
    var dataIdF = configs.get( "conf_DataIdF" ); // (returns Number)
    var dataIdG = configs.get( "conf_DataIdG" ); // (returns Number)
    var dataIdH = configs.get( "conf_DataIdH" ) + ""; // (returns Number)
    
    //// == ワークフローデータの参照 / Data Retrieving ==
    var docId = "";
    if( data.get( dataIdB ) instanceof java.util.ArrayList ){
      docId = data.get( dataIdB ).get(0).getValue() + "";
    }else if( data.get( dataIdB ) instanceof java.lang.String ){
      docId = data.get( dataIdB ) + "";
    }
    var sheet = "";
    if( data.get( dataIdC ) instanceof java.util.ArrayList ){
      sheet = data.get( dataIdC ).get(0).getValue() + "";
    }else if( data.get( dataIdC ) instanceof java.lang.String ){
      sheet = data.get( dataIdC ) + "";
    }
    var rangeI = "";
    if( data.get( dataIdD ) instanceof java.util.ArrayList ){
      rangeI = data.get( dataIdD ).get(0).getValue() + "";
    }else if( data.get( dataIdD ) instanceof java.lang.String ){
      rangeI = data.get( dataIdD ) + "";
    }
    var rangeL = "";
    if( data.get( dataIdE ) instanceof java.util.ArrayList ){
      rangeL = data.get( dataIdE ).get(0).getValue() + "";
    }else if( data.get( dataIdE ) instanceof java.lang.String ){
      rangeL = data.get( dataIdE ) + "";
    }
    
    //// == 演算 / Calculating ==
    var accessLog = "";
    var responseJson = "";
    var token = httpClient.getOAuth2Token( oauth2 );
    
    var choiseIds = "";
    var choiseLabels = "";
    
    try{
      // Method: spreadsheets.values.batchGet
      var uri = "https://sheets.googleapis.com/v4/spreadsheets/";
      uri += docId;
      uri += "/values/:batchGet";
    
      var response = httpClient.begin()
        .bearer(token)
        .queryParam( "ranges", sheet + "!" + rangeI )
        .queryParam( "ranges", sheet + "!" + rangeL )
        .queryParam( "valueRenderOption", "UNFORMATTED_VALUE" )
        .queryParam( "majorDimension", "COLUMNS" )
        .get( uri ); 
      accessLog += "---GET request--- " + response.getStatusCode() + "\n";
      responseJson = response.getResponseAsString();
      if( response.getStatusCode() == 200 ){
        var jsonObj = JSON.parse( responseJson );
        for( var i = 0; i < jsonObj.valueRanges[0].values[0].length; i++ ){
          choiseIds += jsonObj.valueRanges[0].values[0][i] + "\n";
          choiseLabels += jsonObj.valueRanges[1].values[0][i] + "\n";
        }
      }
    }catch(e){
      accessLog += e.message + "\n";
    }
    // for Debug
    // accessLog += responseJson + "\n";
    
    //// == ワークフローデータへの代入 / Data Updating ==
    retVal.put( dataIdF, choiseIds );
    retVal.put( dataIdG, choiseLabels );
    if( dataIdH !== "" ){
      retVal.put( dataIdH, accessLog );
    }
    

    • B’: Bで選択したデータ項目に格納されている Google Spreadsheet ID **
    • C’: Cで選択したデータ項目に格納されている Sheet Title
    • D’: Dで選択したデータ項目に格納されている セル領域を指定する文字列 *
    • E’: Eで選択したデータ項目に格納されている セル領域を指定する文字列 *
    • Spreadsheet B’ の Sheet C’ の領域 D’ と E’ にある値が、それぞれF、Gで選択したデータ項目に格納されます。
    • 通信ログがHで選択したデータ項目に格納されます
    • 領域 D’ と E’ にある値の数が同じであること、領域の途中に空セルが無いことが前提となります
    • * A列の全セルは「A:A」、A列の2行目以降は「A2:A」、A列の1~100行目は「A1:A100」と指定します(参考:A1 notation
    • ** https://docs.google.com/spreadsheets/d/1exampleEXAMPLEexampleEXAMPLEexampleEXAMPLE0/edit#gid=0