Google 脚本自动将日期添加到 Google 工作表中的列
Google Scripts automatically add date to column in Google Sheets
我正在尝试使用 Google 脚本从 GOOGLEFINANCE
检索 2 个证券字段并将输出保存到 Google Sheet 文件。我需要脚本将日期时间添加到 Sheet.
的第一列
我创建了一个包含 3 列的基本 Google Sheet:
- A 被格式化为 DateTime。它在第 1 行中具有列名称 date,并且在第 2 行之后为空
- C 在第 1 行中有列名称 price,在第 2 行之后为空
- 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列的输出是错误的。每次我 运行 函数时,每个新行都会添加到最后一行的上方:
- 我第一次 运行 该函数位于
12/10/2017 22:43:24
并且它首先添加了该行。
- 我第二次 运行 函数是
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 个公式。修改后的脚本与此相同。
参考资料:
如果我误解了你的问题,请告诉我。我要修改。
我正在尝试使用 Google 脚本从 GOOGLEFINANCE
检索 2 个证券字段并将输出保存到 Google Sheet 文件。我需要脚本将日期时间添加到 Sheet.
我创建了一个包含 3 列的基本 Google Sheet:
- A 被格式化为 DateTime。它在第 1 行中具有列名称 date,并且在第 2 行之后为空
- C 在第 1 行中有列名称 price,在第 2 行之后为空
- 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列的输出是错误的。每次我 运行 函数时,每个新行都会添加到最后一行的上方:
- 我第一次 运行 该函数位于
12/10/2017 22:43:24
并且它首先添加了该行。 - 我第二次 运行 函数是
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 个公式。修改后的脚本与此相同。
参考资料:
如果我误解了你的问题,请告诉我。我要修改。