javascript - 谷歌脚本循环覆盖所有行
问题描述
我编写了一个脚本来使用 API 从网站读取数据,并且我想将输出写入谷歌表中。每个 json 对象的 ID 有 4 个数据项,我想将它们写入 4 列 C - F,从第 2 行开始直到第 32 行。
解决方案
我相信你的目标如下。
- 您想将
[current_price,forecast,demand,available_shares]
单元格“C2”中的值放在活动工作表上。
为此,这个答案怎么样?
修改点:
- 在您的脚本中,该值与
for (i = 2; i < 33; i++) {}
每个 each一起放入电子表格中stockId
。这样,旧值将被下一个值覆盖。我认为这是您的问题的原因。 - 我认为在您的情况下,可以使用以下流程。
- 在 for 循环之前准备了一个数组。
- 将 的值放入
[current_price,forecast,demand,available_shares]
数组。 - 当 for 循环完成时,数组被放入电子表格。
通过此流程,将每个stockId
值放入数组中,然后将数组放入电子表格中。当以上几点反映到您的脚本时,它变成如下。
修改后的脚本:
function myFunction() {
let values = []; // Added
for (let stockId = 1; stockId < 32; stockId++) {
if (stockId == 24) continue;
var response = UrlFetchApp.fetch("https://api.torn.com/torn/" + stockId + "?selections=stocks&key=" + API);
var content = response.getContentText();
var json = JSON.parse(content);
var current_price = json["stocks"][stockId]["current_price"];
var forecast = json["stocks"][stockId]["forecast"];
var demand = json["stocks"][stockId]["demand"];
var available_shares = json["stocks"][stockId]["available_shares"];
values.push([current_price,forecast,demand,available_shares]); // Added
}
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Added
ss.getRange("C2:F" + (values.length + 1)).setValues(values); // Added
}
参考:
推荐阅读
- firefox - Firefox webExtension - 在 HTTP POST 响应中重写“redirectURL”
- git - git - libcurl 中不支持或禁用协议 https
- r - model.frame.default 中的错误(公式 = mldata.knn$Gender ~ ., data = mldata_train, : 可变长度不同(为“年龄”找到)
- javascript - 有人能解释一下为什么reduce函数能安慰以下数字吗
- iis-10 - 我无法使用 asp classic 从 IIS(win 2016)生成大于 25.6 MB 的 XML 文件
- python - 为什么 pip 声称我有一个不兼容的模块,尽管版本正确(并破坏了 docker 构建)?
- javascript - 单击html链接时禁用springboot请求检查
- c# - 如果字符串中没有其他文本,C# RegEx 仅替换匹配项
- vue.js - 如何在 Nuxt.js 中编辑 main.js 文件?
- javascript - 将 HTML 表单输入到表格中