Bro*_* IF 1 timezone google-sheets dst google-apps-script google-sheets-formula
我住在巴西(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")');
}
Run Code Online (Sandbox Code Playgroud)
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");
}
Run Code Online (Sandbox Code Playgroud)如果您想使用上面的时间驱动触发器,请使用以下脚本。在这种情况下,触发器的当前总运行时间和自定义函数的当前运行时间分别为 90 分钟/天和 30 秒/执行。Ref请注意这一点。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.createTextFinder("=NOW2").matchFormulaText(true).replaceAllWith("temp");
ss.createTextFinder("temp").matchFormulaText(true).replaceAllWith("=NOW2");
}
Run Code Online (Sandbox Code Playgroud)如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
| 归档时间: |
|
| 查看次数: |
5127 次 |
| 最近记录: |