首页 > 解决方案 > 如何从 URL 连接 Web API 并使用该数据?

问题描述

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

[
    {CODE:value,PRICE:value,QTY:value},
    {CODE:value,PRICE:value,QTY:value}...
]

我希望的价值是:

function responseToRows(requestedFields, parsedResponse) {
  // Transform parsed data and filter for requested fields
  return response.map(function() {
    var row = [];
    requestedFields.asArray().forEach(function (field) {
      switch (field.getId()) {
        case 'CODE':
          return row.push(CODE);
        case 'PRICE':
          return row.push(PRICE);
        case 'QTY':
          return row.push(QTY);
        default:
          return row.push('');
      }
    });
    return { values: row };
  });
}

但我不知道该怎么row.push()

标签: google-apps-scriptgoogle-data-studio

解决方案


您需要对教程中的原始函数进行一些额外的更改:

  • 您可能不会使用requestedFields教程中使用的参数,因为它是基于 Data Studio 使用的对象。因此,您可以删除它,然后检查您传递的每个对象的键(参见下面的代码)。
  • parsedResponse参数未在函数中使用response,而是您正在使用,因此您还需要更改参数的名称。
  • 内部的函数map缺少一个参数名称,该名称将在将值推送到内部的行时使用switch(请参见下面的代码)。我给它起了名字transaction,但如果你愿意,你可以用另一个名字。

做这些修改,代码变成如下:

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 };return row;.


推荐阅读