我有一个谷歌表单,其动态下拉列表以“日期”作为列表。每当用户提交回复时,它都会以字符串形式转到工作表(例如:'5/22/2017 ,而不仅仅是 5/22/2017 )。我有这个google脚本在表单提交上运行以删除单个qoute,以便将其视为日期而不是字符串。
function editDate(e){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW');
var rg = sh.getRange(2,6,sh.getLastRow()-1,2);
var data = rg.getValues();
for(var i=0;i<data.length;i++){
var datstr=String(data[i][0]).replace("'","");
data[i][0]=new Date(datstr);
}
rg.setValues(data);
}
我注意到,当单个qoute(')被删除时,日期就变成了上一个日期(例如,在表单提交时,下拉值为'5/22/2017 ,但是当脚本运行时,它变为 5/21/2017 9:00:00 。我创建了一个示例谷歌表单并将其连接到测试表以测试确切的相同的代码,它的工作完全正常,并反映了正确的日期。但在我的实际文件中它不是,任何建议都将非常感谢。
答案 0 :(得分:2)
所以我编辑了我的脚本以反映正确的日期,现在它完全正常!:)
我更改了一行:
data[i][0]=new Date(datstr);
到此:
data[i][0]=Utilities.formatDate(new Date(datstr), Session.getScriptTimeZone(), "M/d/yyyy");
答案 1 :(得分:0)
我创建了一个包含多个预先设定日期的下拉问题,它们在表单回复表中显示为带有&#39;的字符串。我刚刚选择了整个列并将其格式化为日期和&#39;被删除了,一些简单的测试显示它们被正确地视为日期。