首页 > 解决方案 > 使用 Google Apps 脚本对数组进行 POST 时出现问题

问题描述

我正在开发一个使用 Google Apps 脚本向 API 发送 POST 的代码。

该 API 在有效负载中需要一个 Array of Arrays。

我直接将一个范围的GetValues用作数组数组,因为据我所知,这是一个数组数组

如果我已经使用 curl 进行了测试,那么 API 可以正常工作,但是当我使用 Google Apps 脚本时,API 会返回我说负载不正确。

这是代码:

function GetUrl()
{
    var values = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getDataRange().getDisplayValues();             
    var api = "https://......";
    
    var headers = {
           "xxxxx-auth": "--------------------------",
           "content-type" : "application/json",
           "cache-control": "no-cache" 
         };
    
    var payload =
    {   
        "token": "XXXXXXXXXXXXXXXXXXXXXXXXX",
        "data" : JSON.stringify(values),
    }
    
    Logger.log(payload);
    
    var options = 
    {
      "headers": headers,
      "method" : "POST",
      "payload" : JSON.stringify(payload)
    };
    
    var response = UrlFetchApp.fetch(api, options);
    var json = JSON.parse(response.getContentText());
    
    Logger.log(json);
}

如果我执行此代码,我将得到以下日志:

[20-08-14 03:19:37:134 CEST] {token=XXXXXXXXXXXXX, data=[["header1","header2","header3"],["blu","blu2","blu4"] ,["bla","bla2","bla3"],["blu","blu3","blu5"],["bla","bla3","bla4"]]}

[20-08-14 03:19:37:647 CEST] {Success=false, Data={Code=-1.0, Message=Error: 提供的参数“数据”必须是数组(单元格)的数组。}}

我检查了 JSON.stringify 并没有它。(结果没有差异)

你知道我在创建有效载荷时做错了什么吗?正如我所见,一切都应该没问题...

标签: arraysjsonpostgoogle-apps-scriptpayload

解决方案


推荐阅读