从背后的代码提交Google表单回复(问题:日期)

时间:2019-04-19 06:53:33

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

我有一个链接到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表格的时区设置和脚本时区设置。他们都是一样的。

为什么我的日期与表单回应中提交的日期不同?我有想念吗?

1 个答案:

答案 0 :(得分:0)

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

上面的原因是,尽管JavaScript对象具有自动生成的字符串值,但日期却难以处理,因为

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

参考