【问题标题】:Google Scripts automatically add date to column in Google SheetsGoogle Scripts 自动将日期添加到 Google 表格中的列
【发布时间】:2017-12-11 04:00:10
【问题描述】:

我正在尝试使用从 GOOGLEFINANCE 检索 2 个证券字段并将输出保存到 Google 表格文件的 Google 脚本。我还需要脚本将日期时间添加到工作表的第一列。

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

  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 但它在工作表的最后一行上方添加了该行 - 我希望它在最后一行下方添加新行。

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

【问题讨论】:

    标签: datetime google-apps-script google-sheets google-finance


    【解决方案1】:

    下面的修改怎么样?

    修改点:

    • sh.insertRowAfter(1) 表示在 1 行和 2 行之间插入一行。
      • 在您的情况下,您可以使用 getLastRow() 检索最后一行。
    • getRange("A2").setValue()getRange("C2").setFormula()getRange("D2").setFormula() 表示将值分别导入“A2”、“C2”和“D2”。
      • 这样,值总是导入到 2 行。
    • 当您要将多个值和公式导入工作表时,可以使用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 个公式被同时导入。修改后的脚本与此相同。

    参考资料:

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

    【讨论】:

    • 你能解释一下这两行:sh.getRange(lastrow, 1).setValue(new Date());sh.getRange(lastrow, 3, 1, 2).setFormulas(formulas); - 这里的数字3, 1, 2 是什么意思?
    • @W R 给您带来的不便,我深表歉意。 sh.getRange(lastrow, 1).setValue(new Date()); 表示它将 new Date() 的值导入到 A 列的最后一行 + 1。sh.getRange(lastrow, 3, 1, 2).setFormulas(formulas); 表示它将 2 个公式导入到最后一行 + 1 在 C 列和 D 列。lastrow, 3, 1, 2getRange(lastrow, 3, 1, 2) 是行、列坐标、行数和列数。 getRange()的引用是here
    猜你喜欢
    • 2020-05-19
    • 2020-01-26
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多