一直在使用Google从CoinGecko API中收集历史比特币数据。手动方法,我必须打开工作表并复制和“只粘贴值”来粘贴历史记录列表中的数据。历史记录在左边,数据收集在右边。如果可能的话,我想让这个过程自动化。当前代码提取了10行数据,这些数据还没有在历史记录中。历史记录行以“底部”字段结尾,以指示页面底部。脚本编辑器已设置为在午夜运行以进行数据收集。下面是我的例子:https://docs.google.com/spreadsheets/d/1kAcVtF2x9ox7gNCt5liQdhApQpGaBw1kl4I8PjKMfx8/edit?usp=sharing
发布于 2020-09-30 10:57:29
回答
您必须使用Sheet和Range类。
代码
为了使该过程自动化,在现有的Apps脚本中添加以下代码:
function Pull_History_bitcoin() {
//PREVIOUS CODE
var days = parseInt(targetSheet.getRange("J4").getValue().toString());
if (days > 0) {
var range = targetSheet.getRange("G6:J" + (5+days)).getValues();
var lastRowHistory = targetSheet.getRange("G1").getValue();
var nextLastRowHistory = parseInt(lastRowHistory[1]) + days;
var bottomCell = targetSheet.getRange("A" + nextLastRowHistory);
bottomCell.setValue("BOTTOM");
var nextRange = targetSheet.getRange(`${lastRowHistory}:D` + (nextLastRowHistory - 1));
nextRange.setValues(range);
}
}其中,天数定义调用外部API后的条目数。
不要担心四舍五入的值,因为它们只是显示四舍五入,当前的值与原始值一样。
参考文献
发布于 2020-10-04 18:40:00
在这里,找到我的完整谷歌应用-脚本作为参考,任何人希望从免费的CoinGecko Api服务获取密码历史信息。
function Pull_History_bitcoin() {
var targetSS = SpreadsheetApp.getActive();
var targetSheet = targetSS.getSheetByName("bitcoin");
// To force an update
targetSheet.insertRowBefore(3);
targetSheet.deleteRow(3);
// Copy newly acquired history into the history columns
var days = parseInt(targetSheet.getRange("J4").getValue().toString());
if (days > 0) {
var range = targetSheet.getRange("G6:J" + (5+days)).getValues();
var lastRowHistory = targetSheet.getRange("G1").getValue();
//var nextLastRowHistory = parseInt(lastRowHistory[1],4) + days;
var nextLastRowHistoryStr = lastRowHistory.slice(1);
var nextLastRowHistory = Number(nextLastRowHistoryStr) + days;
var nextRange = targetSheet.getRange(`${lastRowHistory}:D` + (nextLastRowHistory - 1));
nextRange.setValues(range);
var bottomCell = targetSheet.getRange("A" + nextLastRowHistory);
bottomCell.setValue("BOTTOM");
}
}https://stackoverflow.com/questions/64134680
复制相似问题