使用 importxml 在 Google Sheet 中创建每日投资组合跟踪器

Create a daily portfolio tracker in Google Sheet, with importxml

我正在尝试跟踪 Google Sheet 中某些股票的每日股票价值和日期。目前,数据捕获代码运行良好,但每次发生更改时它都会用新值替换所有值。 在 A2 中,我有一个基于 IMPORTXML 的单元格,它从 Morningstar 获取日期,在 B2 中,基于 SUBSTITUTE(SUBSTITUTE(importxml(CONCATENATE... 从 FT 获取每日值。

我的脚本代码如下:

function saveData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet2")

  var current_date = sheet.getRange('Tracker!A2').getValues();
  var current_value = sheet.getRange('Tracker!B2').getValues();

  sheet.appendrow([current_date, current_value]);

Tracker 是页面的名称。 运行 代码告诉我无法从 null 获取范围。请问是什么问题?

这个答案怎么样?

修改点:

  • 在您的脚本中,使用了 3 个 sheet 名称,即 "sheet1"、"sheet2" 和 "Tracker"。 sssheet 分别是 "sheet1" 和 "sheet2" 的 sheet 对象。并且,current_datecurrent_value 分别从 "Tracker" 的 sheet 上的 "A2" 和 "B2" 中检索。
    • 在这种情况下,我认为Running code tells me that I cannot getRange from null.错误的原因是"sheet2"的sheet名称的sheet可能不包含在你的点差sheet.
    • 但是,在您的脚本中,使用了 sheet.appendrow([current_date, current_value]);。所以你想把值放到 "sheet2" 或其他 sheet 的 sheet 中?关于这一点,我从你的问题中无法理解。
  • 如果要使用appendrow,请修改为appendRow
  • 在您的脚本中,getValues() 检索到的二维数组用作 [current_date, current_value] 的值。在这种情况下,即使将 appendrow 修改为 appendRow,像 [Ljava.lang.Object;@### 这样的值也会被放入单元格。
  • 如果您想从 sheet "Tracker" 的 "A2" 和 "B2" 的单元格中检索值,并希望将检索到的值附加到 sheet,可以用Tracker!A2:B2作为范围。

当以上几点反映到你的脚本中,就会变成下面这样。

修改后的脚本:

请将目标 sheet 名称设置为 sheetName

function saveData() {
  var sheetName = "###";  // Please set the destination sheet name.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var value = ss.getRange('Tracker!A2:B2').getValues();
  ss.getSheetByName(sheetName).appendRow(value[0]);
}

参考文献: