我住在巴西(UTC偏移-3:00),在这里我们有一个称为夏时制的时间,在一年中的某些时候,时钟会提前1小时。
发生的事情是我准备了一个完整的电子表格来过滤英格兰时区的数据。
我今天遇到了一个大问题,因为Google的时代已经改变,我的数据被错误地过滤了。
我在脚本中的原始公式是:
spreadsheet.getCurrentCell().setFormula('=text(now()+"5:00","yyyy/mm/dd hh:mm")');
现在许多小时后,我意识到了故障,需要切换到:
spreadsheet.getCurrentCell().setFormula('=text(now()+"4:00","yyyy/mm/dd hh:mm")');
为了不再发生这种情况,我想知道如何在NOW()函数内添加英格兰时区。
我尝试过:
spreadsheet.getCurrentCell().setFormula('=text(now("UK"),"yyyy/mm/dd hh:mm")');
但未能返回。我每1分钟使用一个触发器来更新电子表格中的时间,我想知道我可以采取什么措施来解决此问题。
详细信息:我可以在电子表格设置中更改时间,但是我需要将其保存在本地时间。
如果我的理解是正确的,那么这个答案呢?
[不幸的是,在当前阶段,内置功能NOW()
没有更改时区的选项。如果更改了NOW()
的时区,则需要更改电子表格的时区。但是在您的情况下,电子表格的时区无法更改。因此,作为一种解决方法,我想建议使用Utilities.formatDate()
。
示例脚本如下。
function NOW2(timeZone, format) {
return Utilities.formatDate(new Date(), timeZone, format);
}
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getCurrentCell().setFormula('=NOW2("Europe/London", "yyyy/mm/dd hh:mm")');
}
NOW2()
用作自定义功能。在示例脚本中,当运行myFunction()
时,会将=NOW2("Europe/London", "yyyy/mm/dd hh:mm")
放入当前单元格。这样,通过将时区转换为Europe/London
的格式将yyyy/mm/dd hh:mm
转换为当前时间。如果要在打开电子表格时刷新=NOW2("Europe/London", "yyyy/mm/dd hh:mm")
的自定义功能,请使用以下脚本作为简单触发器。
function onOpen(e) {
e.source.createTextFinder("=NOW2").matchFormulaText(true).replaceAllWith("temp");
e.source.createTextFinder("temp").matchFormulaText(true).replaceAllWith("=NOW2");
}
如果您想通过时间驱动的触发器在上面使用,请使用以下脚本。在这种情况下,触发器的当前总运行时间和自定义函数的当前运行时间分别为90分钟/天和30秒/执行。 Ref请注意这一点。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.createTextFinder("=NOW2").matchFormulaText(true).replaceAllWith("temp");
ss.createTextFinder("temp").matchFormulaText(true).replaceAllWith("=NOW2");
}
如果我误解了您的问题,但这不是您想要的结果,我深表歉意。