Google 脚本自动将日期添加到 Google 工作表中的列

Google Scripts automatically add date to column in Google Sheets

我正在尝试使用 Google 脚本从 GOOGLEFINANCE 检索 2 个证券字段并将输出保存到 Google Sheet 文件。我需要脚本将日期时间添加到 Sheet.

的第一列

我创建了一个包含 3 列的基本 Google Sheet:

  1. A 被格式化为 DateTime。它在第 1 行中具有列名称 date,并且在第 2 行之后为空
  2. C 在第 1 行中有列名称 price,在第 2 行之后为空
  3. D 在第 1 行中具有列名称 pe,并且在第 2 行之后为空

这是我的函数:

function myStocks() {

  var sh = SpreadsheetApp.getActiveSpreadsheet();

  sh.insertRowAfter(1);
  sh.getRange("A2").setValue(new Date());

  sh.getRange("C2").setFormula('=GOOGLEFINANCE("GOOG", "price")');
  sh.getRange("D2").setFormula('=GOOGLEFINANCE("GOOG", "pe")');
}

这是输出:

Date                    price   pe
12/10/2017 22:44:31     1037.05 34.55
12/10/2017 22:43:24     1037.05 34.55

C列和D列的输出是正确的。 A列的输出是错误的。每次我 运行 函数时,每个新行都会添加到最后一行的上方:

  1. 我第一次 运行 该函数位于 12/10/2017 22:43:24 并且它首先添加了该行。
  2. 我第二次 运行 函数是 12/10/2017 22:44:31 但它在 sheet 的最后一行上方添加了该行 - 我希望它在最后一行下方添加新行行。

有没有办法使用脚本函数在 GoogleSheet 秒的单个列中自动向下填充日期时间?

下面的修改怎么样?

修改点:

  • sh.insertRowAfter(1)表示在1行和2行之间插入一行。
    • 在您的情况下,您可以使用 getLastRow() 检索最后一行。
  • getRange("A2").setValue()getRange("C2").setFormula()getRange("D2").setFormula()分别表示将值导入到"A2"、"C2"和"D2"。
    • 这样,值总是导入到 2 行。
  • 当您想将多个值和公式导入到 sheet 时,您可以使用 setValues()setFormulas()

以上几点反映出来的脚本如下

修改脚本:

function myStocks() {
  var sh = SpreadsheetApp.getActiveSheet();
  var lastrow = sh.getLastRow() + 1; // This means a next row of last row.
  sh.getRange(lastrow, 1).setValue(new Date());
  var formulas = [['=GOOGLEFINANCE("GOOG", "price")', '=GOOGLEFINANCE("GOOG", "pe")']];
  sh.getRange(lastrow, 3, 1, 2).setFormulas(formulas);
}

注:

  • 在您的脚本中,同时导入了日期和 2 个公式。修改后的脚本与此相同。

参考资料:

如果我误解了你的问题,请告诉我。我要修改。