微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Apps Script V8和旧版中从Google表格检索到的不同日期值

如何解决在Apps Script V8和旧版中从Google表格检索到的不同日期值

我有这非常简单的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脚本旧版,并且当我执行完全相同的代码时(我的意思是除了降级环境(具有“运行”菜单),那么我得到了良好的格林尼治标准时间,但持续时间错误!我得到了55分钟39秒,而不是5分钟! 我在应用脚本V8,应用脚本旧版和Google表格中检查了时区,“ GMT + 01:00 Paris”在每个地方都相同。

甚至陌生人:该测试实际上是从2019年8月创建的原始文件的副本执行的。在原始文件中,我得到了相反的行为。我的应用程序脚本具有很好的价值,但运行时V8却具有不同的价值(我得到了23:14:21而不是00:05:00)。

其他人还会遇到这种行为吗?您知道如何在没有这些问题的情况下在新文件上运行旧版应用脚本脚本吗?谢谢。

google sheet

google apps script V8 vs Legacy

解决方法

作为解决方法,您可以改用getDisplayValue()

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

然后,基于此值,您可以构造自己喜欢的日期对象。

,

因此,我注意到只有在将发布到V8之前创建的文件上升级到V8的情况下才出现此问题(反之亦然)。因此,为避免这种情况,如果我有一个旧文件要在其中将应用程序脚本升级到V8,请先复制该文件,然后再复制到新文件(如果V8已经存在,则是最新文件),那么我就不会遇到问题...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。