【问题标题】:Submitting Google Form Response from Code Behind (Issue: Date)从代码后面提交 Google 表单响应(问题:日期)
【发布时间】:2019-04-19 06:53:33
【问题描述】:

我有一个链接到 Google 表格的 Google 表单,用于回复。我还制作了另一个 Google 表格文件和 GAS,这将允许我以编程方式/从后面的代码添加对我的 Google 表单的响应。我的GAS代码如下:

var data = sheet.getDataRange().getValues();
var form = FormApp.openByUrl(formURL);
formResponse[0] = form.createResponse();
formResponse[0].withItemResponse(items[0].asListItem().createResponse(data[1][0])); //data[1][0] holds my Date response 2011/11/11
formResponse[0].submit();

这可以成功地将我的回复添加到我的 Google 表单中。但是,我可以在 Google 表格(用于回复)中清楚地看到日期不是 2011 年 11 月 11 日而是 2011 年 11 月 10 日。它总是减去一天。

我怀疑这可能是文件的时区问题,所以我检查了 Google 表格的时区设置和脚本时区设置。他们都是一样的。

为什么我的日期与我在表单回复中提交的日期不同?我错过了什么吗?

【问题讨论】:

  • 您的电子表格的区域设置是什么?什么是单元格编号格式? Apps 脚本调试器上显示的值是data[1][0]

标签: javascript datetime google-apps-script timezone google-forms


【解决方案1】:

类 ListItem 需要一个字符串作为响应。使用Utilities.formatDate(...) 将日期转换为字符串。

上面是因为虽然 JavaScript 对象有一个自动生成的字符串值,但日期很难处理,因为

  • 日期从电子表格设置继承时区
  • 单元格编号格式可能会使日期以非标准方式显示
  • Google 表格和 JavaScript 使用不同的 EPOCH

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多