You need to enable JavaScript to run this app. Google Sheets脚本编辑器数据验证构建器筛选日期列表格式化问题
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets脚本编辑器数据验证构建器筛选日期列表格式化问题

解决方案

你之前调用Utilities.formatDate()失败大概率是两个常见配置错误:

  • 格式字符串中表示月份的参数误用了小写mm(小写mm对应时间的分钟数,大写MM才对应公历月份)
  • 时区参数和你设置的GMT+5:30不匹配

直接替换你代码中生成plSentDateValidationList的对应行即可,修改后完整逻辑如下:

// Get DC dates using FILTER
var plSentDateList = PSIData.filter(function(item){
  return item[0] === miDC; 
})

// 格式化日期为dd/mm/yyyy格式
var plSentDateValidationList = plSentDateList.map(x => {
  const rawDate = x[1];
  // 过滤非日期类型值,避免运行报错
  if (!(rawDate instanceof Date)) return rawDate;
  // 时区填你备注的GMT+5:30,格式串严格用大写MM表示月份
  return Utilities.formatDate(rawDate, "GMT+05:30", "dd/MM/yyyy");
}).sort();

// Logger.log(plSentDateValidationList);    

var plSentDateValidationRule = SpreadsheetApp.newDataValidation().requireValueInList(plSentDateValidationList).setAllowInvalid(false).build();      

// Apply validation rule to adjacent cell using offset
activeCell.offset(0,1).setDataValidation(plSentDateValidationRule); 

补充注意事项

  • 该方案生成的数据验证下拉列表显示的是dd/mm/yyyy格式的字符串,如果你后续需要读取该单元格的选中值做日期计算,需要先把字符串转回日期对象再处理
  • 如果后续调整了表格的时区设置,需要同步修改Utilities.formatDate的第二个时区参数,避免日期显示偏差

内容的提问来源于stack exchange,提问作者Rock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 20:15:02