javascript - 在 Google 表格中的表格顶部添加 fow
问题描述
我在 Google 表格中跟踪我的股票投资组合。下面的脚本在每天晚上收市后触发。它采用某些值并将它们写入名为 的表Portfolio
中,我会在其中保留这些指标随时间推移的历史记录。
var currSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var shtPortfolio = currSpreadsheet.getSheetByName('Portfolio');
function savePortfolio()
{
var rngMarketValue = shtPortfolio.getRange("G3:G3").getValues();
var rngCost = shtPortfolio.getRange("G2:G2").getValues();
var rngUnrealizedPL = shtPortfolio.getRange("L2:L2").getValues();
var rngUnrealizedYield = shtPortfolio.getRange("K3:K3").getValues();
var rngRealizedPL = shtPortfolio.getRange("J2:J2").getValues();
var rngRealizedReturn = shtPortfolio.getRange("L6:L6").getValues();
var rngDividends = shtPortfolio.getRange("N2:N2").getValues();
var rngYield = shtPortfolio.getRange("M3:M3").getValues();
const d = new Date();
const mn = new Intl.DateTimeFormat('en', { minute: '2-digit' }).format(d);
const hr = new Intl.DateTimeFormat('en', { hour: '2-digit', hour12: false }).format(d);
const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d);
const mo = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(d);
const da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d);
var arrNewRow = ['', // column A always empty
(`${da}.${mo}.${ye} ${hr}:${mn}`),
rngMarketValue[0][0],
rngCost[0][0],
rngRealizedPL[0][0],
rngRealizedReturn[0][0],
rngUnrealizedPL[0][0],
rngUnrealizedYield[0][0],
rngDividends[0][0],
rngYield[0][0]
];
shtPortfolio.appendRow(arrNewRow);
}
它工作得很好,但让我感到困扰的是最新的日子,在工作表的底部。我想做相反的事情:在工作表顶部连续添加最新条目,如下所示:
这就是日志现在的样子。请注意,我保留的历史记录仅从第 4 行开始;上面的行中有需要留在那里的东西。
A B C D E
1 Here I have some stuff written that needs to stay on top of the sheet
2
3 Date MarketValue Cost ... RealizedPL
4 14.01.2021 4500 4000 100
5 13.01.2021 4600 3900 100
今天之后,脚本将一如既往地获取值,但现在在第 4 行上方创建一个新行(而不是仅在第 6 行中追加):
A B C D E
1 Here I have some stuff written that needs to stay on top of the sheet
2
3 Date MarketValue Cost ... RealizedPL
4 15.01.2021 4300 4000 100
5 14.01.2021 4500 4000 100
6 13.01.2021 4600 3900 100
可以这样做吗,如果可以,有人可以帮助我吗?我正在寻找一个名为prepend
但它似乎不存在的函数。
解决方案
您可以使用insertRowBefore(beforePosition)在特定行索引之前添加新行。
之后,在新添加的行中选择要设置数据值的范围。
样本:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var data = [[new Date(),100,100,100] ];
sheet.insertRowBefore(4);
sheet.getRange(4,2,1,4).setValues(data);
输出:
推荐阅读
- python - 如何从关键位置的值中获取国家/地区?
- javascript - javascript 如何通过组合两个 JSON 来创建一个 JSON
- python - Python从网络获取ips和macs
- redux - 在 Redux 中间件中是否应该总是最后调用“下一个”?
- hyperledger-fabric - Hyperledger Composer 车辆生命周期网络
- sql - SQLite 将由逗号分隔的值的字符串转换为列表
- php - 文本上的 PHP preg_match 不起作用
- kubernetes - 由于服务器向 HTTPS 客户端提供了 HTTP 响应,Kubernetes oc rsync 不起作用
- python - 代码的执行顺序
- python - pandas - 根据“键”值仅更新特定的 DataFrame 列值