javascript - 如何使用谷歌应用程序脚本将数组写入工作表列并在其旁边的列中添加自定义公式?
问题描述
这是问题所在:
从工作表中的列中获取代码列表(股票清单)
推它,这样每个股票在数组中出现 105 次
将结果数组写入另一个工作表的列 (TickersData)
在每个元素带到 TickersData 的第一个代码旁边,添加公式。
这是代码,我可以在其中重复数组中的值,但不能将它们写入另一张表:
function getGFTickersData() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LIST OF STOCKS");
var tickerRng = ss.getRange(2, 1, ss.getLastRow(), 1).getValues();
var TDSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TickersData");
var startRow = 2;
var tickerArr = [];
for (var b = 0; b < tickerRng.length; b++) {
var tickerToArr = tickerRng[b];
if (tickerRng[b] != '') {
var repeated = [].concat(... new Array(104).fill([tickerToArr]));
tickerArr.push(repeated);
}
}
Logger.log(tickerArr.length);
TDSheet.getRange(TDSheet.getLastRow() + 1, 1, tickerArr.length, 1).setValues(tickerArr);
var targetRow = TDSheet.getRange("B:B").getValues();
var maxIndex = targetRow.reduce(function (maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
var row = TDSheet.getRange(maxIndex + 2, 2).setFormula("=query(googlefinance(" + '"' + tickerArr + '"' + ",'all shares'!A4,'all shares'!D3,'all shares'!D4,'all shares'!D5)," + '"' + "select *" + '"' + ",1)");
}
解决方案
我相信你的目标如下。
- 您想从“股票清单”表中的“A2:A”中检索值。
- 您希望通过包含 1 行具有公式的 105 行将检索到的值放入“Sheet10”表
=query(googlefinance("###",'all shares'!A4,'all shares'!D3,'all shares'!D4,'all shares'!D5),"select *",1)
。
为了实现您的目标,我想提出以下示例脚本。
示例脚本:
function getGFTickersData() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LIST OF STOCKS");
var tickerRng = ss.getRange(2, 1, ss.getLastRow() - 1, 1).getValues();
var TDSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet10");
var values = tickerRng.flatMap(([a]) => [[a, `=query(googlefinance("${a}",'all shares'!A4,'all shares'!D3,'all shares'!D4,'all shares'!D5),"select *",1)`], ...new Array(104).fill([a, ""])]);
TDSheet.getRange(TDSheet.getLastRow() + 1, 1, values.length, 2).setValues(values);
}
参考:
推荐阅读
- python - 如何将捕获的输入从 tkinter 条目小部件写入 json 文件
- c# - 将焦点设置为 Xamarin 表单中的下一个条目
- php - 正则表达式检查字符串中特定单词后是否存在括号[包含字母数字字符]
- ios - Safari:输入元素上的光标未呈现透明
- c - 使用存储在 calloc 缓冲区中的数据
- outlook-addin - mail.item.displayReplyAllForm 打开的回复表单默认折叠
- python - 从列表格式的数据框列中删除重复项
- wordpress - Wordpress/htaccess 重写规则捕获父目录但不捕获子目录
- java - Amazon S3 REST API - 路径中有空格的资源
- sql - SQL SSIS - 循环容器循环通过 ETL 过程以获取 Varchar ID 以计算销售信息