date - 从 Apps 脚本 V8 和旧版中的 google 工作表检索到不同的日期值

标签 date google-apps-script google-sheets v8 duration

我有这个非常简单的 4 行代码来从 Google Apps 脚本检索 google 表格中的持续时间值。该工作表是空白的,并且仅具有此测试的值。

google sheet - one cell value only

function myFunction() {
  var my_ss = SpreadsheetApp.getActiveSpreadsheet();
  var my_sh = my_ss.getSheetByName("test");
  var my_value = my_sh.getRange("A1").getValue();
  console.log(my_value);
}

当我在新的运行时 V8 中运行它时,我得到了 5 分钟的良好持续时间(GMT 很差,但我不使用它)。但是由于 V8 上当前的错误,我们无法使用控制台来开发数组和对象,我将脚本降级为 Apps script Legacy,当我执行完全相同的代码时(我的意思是,除了降级环境与运行菜单),然后我得到了良好的 GMT,但持续时间错误!我的时间是 55 分 39 秒,而不是 5 分钟! 我检查了应用程序脚本 V8、应用程序脚本旧版和 google 表格中的时区,每个地方都是相同的,“GMT+01:00 巴黎”。

更奇怪的是:这个测试实际上是根据 2019 年 8 月创建的原始文件的副本执行的。在原始文件中,我得到了相反的行为。我通过应用程序脚本遗留获得了良好的值(value),但通过运行时 V8,我获得了不同的值(我得到了 23:14:21 而不是 00:05:00)。

还有其他人遇到过这种行为吗?您知道如何在新文件上运行旧版应用程序脚本而不会出现这些问题吗?谢谢。

google sheet google apps script V8 vs Legacy

最佳答案

作为解决方法,您可以使用 getDisplayValue()相反:

var my_value = my_sh.getRange("A1").getDisplayValue();

然后,根据这个值,您可以构造一个您喜欢的日期对象。

关于date - 从 Apps 脚本 V8 和旧版中的 google 工作表检索到不同的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63577394/

相关文章:

javascript - Google Apps 脚本未检测到当前行

google-apps-script - 当 Zapier 更新工作表时运行 onEdit 触发器

javascript - 如何将来自 HTML UI 的多个输入添加到 Google 电子表格?

google-sheets - 谷歌电子表格基于同一列中的前一个单元格的自定义条件格式

date - 在精确范围内查询最大日期并获取结果中的选定字段

javascript - 设置用户输入日期的格式。

javascript - Angular 按日期排序

java字符串日期转换

javascript - 无法聚焦 onOpen 触发器中的单元格

google-sheets - 可以为 "skip"行的数组公式