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

问题描述 投票:0回答:1

我有一个Google表单,链接到Google表格以获取回复。我还制作了另一个Google Sheet文件和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表格的时区设置和脚本时区设置。他们都是一样的。

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

javascript datetime google-apps-script timezone google-form
1个回答
0
投票

Class ListItem需要String作为响应。使用Utilities.formatDate(...)将Date转换为String。

以上是因为当JavaScript对象具有自动生成的字符串值时,Dates很难处理,因为

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

参考

© www.soinside.com 2019 - 2024. All rights reserved.