Google apps script 如何从URL连接web API并使用该数据?

Google apps script 如何从URL连接web API并使用该数据?,google-apps-script,google-data-studio,Google Apps Script,Google Data Studio,我完成了大约计数npm包的下载次数,现在我可以从url使用JSON web api,但我不知道如何使用responseToRows()函数将其解析为行,我可以在Logger.log()中获取数据。 我的JSON结构是 [ {CODE:value,PRICE:value,QTY:value}, {CODE:value,PRICE:value,QTY:value}... ] 我希望的价值是: 函数响应行(requestedFields,parsedResponse){ //转换解析

我完成了大约计数npm包的下载次数,现在我可以从url使用JSON web api,但我不知道如何使用responseToRows()函数将其解析为行,我可以在Logger.log()中获取数据。 我的JSON结构是

[
    {CODE:value,PRICE:value,QTY:value},
    {CODE:value,PRICE:value,QTY:value}...
]
我希望的价值是:

函数响应行(requestedFields,parsedResponse){
//转换解析的数据并筛选请求的字段
返回response.map(函数(){
var行=[];
requestedFields.asArray().forEach(函数(字段){
开关(field.getId()){
案例“代码”:
返回行推送(代码);
案例“价格”:
返回行。推送(价格);
案例“数量”:
返回行推送(数量);
违约:
返回行推送(“”);
}
});
返回{值:行};
});
}

但是我不知道如何
row.push()
,因为您需要对教程中的原始函数进行一些额外的更改:

  • 您可能不会像在教程中使用的那样使用
    requestedFields
    参数,因为它是基于DataStudio使用的对象。因此,您可以删除它,只需查看正在传递的每个对象的键(请参见下面的代码)
  • 函数中没有使用
    parsedResponse
    参数,您使用的是
    response
    ,因此您还需要更改参数的名称
  • map
    中的函数缺少一个参数名,将值推送到
    开关中的行时将使用该参数名(请参见下面的代码)。我将其命名为
    事务
    ,但如果需要,您可以使用其他名称
进行这些修改后,代码将变成如下所示:

function responseToRows(response) {
  return response.map(function(transaction) {
    var row = [];

    Object.keys(transaction).forEach(function (field) {
      switch (field) {
        case 'CODE':
          return row.push(transaction.CODE);
        case 'PRICE':
          return row.push(transaction.PRICE);
        case 'QTY':
          return row.push(transaction.QTY);
        default:
          return row.push('');
      }
    });
    return { values: row };
  });
}
然后你可以这样测试它:

function test() {
  const testData = [
    {CODE:1,PRICE:1,QTY:1},
    {CODE:2,PRICE:2,QTY:2},
    {CODE:3,PRICE:3,QTY:3},
    {CODE:4,PRICE:4,QTY:4},
  ];
  Logger.log(responseToRows(testData));
}
// Result:
//[{values=[1.0, 1.0, 1.0]}, 
// {values=[2.0, 2.0, 2.0]}, 
// {values=[3.0, 3.0, 3.0]}, 
// {values=[4.0, 4.0, 4.0]}
//]
另外,如果您计划将该结果写入一个工作表,那么最好使用二维数组格式,因此您必须更改
return{values:row}
只返回