【发布时间】:2026-02-10 21:15:02
【问题描述】:
我创建了一个脚本,允许我使用电子表格中的数据在 Google 表单中创建一个动态下拉列表。电子表格中的数据是日期列表,但当它被添加到 Google 表单的下拉列表中时,它会变成一个字符串。当有人提交回复时,数据会进入电子表格,并且该下拉列表的值被视为字符串而不是日期,例如'5/5/2018 而不是 5/5/2018。
var fromRange = 'RequestDates'; //namedRange from Spreadsheet for 'From date' dropdown
var toRange = 'RequestToDates'; //namedRange from Spreadsheet for 'To date' dropdown
function updateDates(e){
// a way to get the items from the form
var form = FormApp.openById("10uyPYIpVtKLg5eaxIrc8di93v7NW1ZSL6gjbtQs4NvE");
var FromList = form.getItemById(1.403587334E9).asListItem();
var ToList = form.getItemById(4.09925665E8).asListItem();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var FormsTest = ss.getSheetByName("AppScript");
// get the values in the first column accept header row 1
var FromValues = FormsTest.getRange('RequestDates').getDisplayValues();
var ToValues = FormsTest.getRange('RequestToDates').getDisplayValues();
var FromNames = [];
for(var i = 0; i < FromValues.length; i++) {
if(FromValues[i][0] != "") {
FromNames[i] = FromValues[i][0];
}
}
var ToNames = [];
for(var y = 0; y < ToValues.length; y++) {
if(ToValues[y][0] != "") {
ToNames[y] = ToValues[y][0];
}
}
// populate the list
FromList.setChoiceValues(FromNames);
ToList.setChoiceValues(ToNames);
}
电子表格中的日期列表每天都会自动更新,仅允许当天后 12 天到当天后 180 天,这意味着动态下拉菜单也会每天自动更新。我对 javascript 很陌生,所以任何建议都将不胜感激。
【问题讨论】:
-
使用 JavaScript 字符串方法(如 substring 或 slice 或 replace)删除前导单引号。然后使用新的 Date(string) 构造函数。它非常健壮,可能会识别模式并将其强制转换为日期。
-
例如,我的日期在 C2:C 范围内,如何使用切片或替换来删除单引号?我试过 function dateformat(e){ var ss = SpreadsheetApp.getActiveSpreadsheet() var FormResponse = ss.getSheetByName("Form Responses 2"); var dateRange = FormResponse.getRange("C2:C"); dateRange.getValues().slice(0); } 但它不起作用
-
var data=dareRange.getValues() 中的第一个值是 data[0][0] (即它是二维的)所以它是 data[0][0].slice(1)
-
对不起,我对这一切都很陌生,它应该看起来像这样吗? 'dateRange.getValues().data[0][0].slice(1);'
-
在您的原始脚本中使用
getValues()而不是getDisplayValues()怎么样
标签: google-apps-script google-sheets google-forms