【问题标题】:Apps Script - Using Google Sheets REST API v4 - Values not being written - No error messageApps 脚本 - 使用 Google Sheets REST API v4 - 未写入值 - 无错误消息
【发布时间】:2018-03-08 03:49:00
【问题描述】:

我一切正常,但没有将值写入电子表格。我什至从 POST 请求中得到了部分有效的响应。我只是不知道将values 放在哪里我试过将它们放入有效负载和 URL 中

function writeToSheet() {
  var id,options,range,response,sh,ss,url,values;

  id = 'Put the spreadsheet ID here';
  range = "Sheet1!A1:A1";
  values = "['3','two','nine']";

  url = "https://sheets.googleapis.com/v4/spreadsheets/" +
    id + "/values/" + range + ":append?valueInputOption=USER_ENTERED";

  options = {
    "method":"post",
    "muteHttpExceptions": true,
    "headers": {
      "Authorization": "Bearer " + ScriptApp.getOAuthToken()
    }
  }

  response = UrlFetchApp.fetch(url,options)
  response = JSON.parse(response);

  Logger.log('response ' + JSON.stringify(response))
}

我试过了:

url = "https://sheets.googleapis.com/v4/spreadsheets/" + id + 
  "/" + values + "/" + range + ":append?valueInputOption=USER_ENTERED";

我尝试将values 属性放入有效负载中。没有任何效果。

我的示波器工作正常。我没有收到任何授权错误。这是我的清单文件,其作用域很好。

{
  "timeZone": "America/New_York",
  "dependencies": {
  },
  "webapp": {
    "access": "MYSELF",
    "executeAs": "USER_DEPLOYING"
  },
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": ["https://www.googleapis.com/auth/drive",
                  "https://www.googleapis.com/auth/script.external_request"]
}

我什至从 POST 请求中得到了看起来合法的响应,但值除外。

  /*  The response I'm getting back

  {
    "spreadsheetId":"ID Here",
    "tableRange":"Sheet1!A1:C2",
    "updates":{
      "spreadsheetId":"ID here",
      "updatedRange":"Sheet1!A3"
      }
  }

  */

我将要写入电子表格的值放在哪里?

【问题讨论】:

    标签: post google-apps-script google-sheets-api


    【解决方案1】:

    这个修改怎么样?

    修改点:

    • 标题中必须包含"application/json"
    • 请求正文是{values: [['3','two','nine']]}
      • 假设您希望将'3','two','nine' 的值分别附加到A、B 和C 列。
      • 如果要将'3','two','nine' 的值分别附加到第1、2 和3 行,请使用{values: [['3'],['two'],['nine']]}

    修改后的脚本:

    function writeToSheet() {
      var id,options,range,response,sh,ss,url,values;
    
      id = 'Put the spreadsheet ID here';
      range = "Sheet1!A1:A1";
      values = {values: [['3','two','nine']]}; // Modified
    
      url = "https://sheets.googleapis.com/v4/spreadsheets/" +
        id + "/values/" + range + ":append?valueInputOption=USER_ENTERED";
    
      options = {
        "method":"post",
        "muteHttpExceptions": true,
        "headers": {
          "Authorization": "Bearer " + ScriptApp.getOAuthToken()
        },
        "contentType": "application/json", // Added
        "payload": JSON.stringify(values) // Added
      }
    
      response = UrlFetchApp.fetch(url,options)
      response = JSON.parse(response);
    
      Logger.log('response ' + JSON.stringify(response))
    }
    

    参考资料:

    如果这不起作用,我可以询问您有关错误消息的信息吗?我想修改它。

    【讨论】:

    • @Sandy 欢迎您。很高兴您的问题得到了解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2021-10-28
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多