google-apps-script - 如何从 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()
做
解决方案
您需要对教程中的原始函数进行一些额外的更改:
- 您可能不会使用
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;
.
推荐阅读
- python - Python Lambda:长度之间的字符串
- java.util.scanner - 从键盘读取输入后出现奇怪的问题
- css - CSS打字机效果从右到左开始
- javascript - 使用 Chart.js 的 onClick 函数,您可以从未定义或空结果执行代码吗?
- git - Git 不允许变基,因为没有分阶段的更改
- python - AttributeError:“AxesSubplot”对象没有属性“set_color_cycle”
- html - 图像 div 打破文本输入 HTML/CSS
- c# - C# 的最佳实践。用await传参数可以吗?
- python - 在渲染模板之前等待 MySQL 执行
- mysql - MYSQL - 搜索一些字符串