Google Sheets自定义函数ConcatIfDates日期拼接异常求助
修正Google Sheets自定义函数ConcatIfDates()实现日期拼接
你的问题出在代码里每次都新建了当前日期,完全没用到GetColoredValue()传进来的实际日期数据,所以才会返回一堆重复的当前日期。下面是修正后的代码,同时解决冗长日期格式的问题:
function ConcatIfDates(input) { // 把传入的二维数组扁平化,只保留有效的日期对象 const validDates = input.flat().filter(item => item instanceof Date); // 按指定格式格式化每个日期,时区请根据你的实际需求调整 const formattedDates = validDates.map(date => { // 示例用你提到的GMT+06:30,可自行修改 return Utilities.formatDate(date, "GMT+06:30", "dd-MMM-yy"); }); // 用逗号加空格拼接成目标格式 return formattedDates.join(", "); }
关键改动说明:
- 删掉了错误的
var date = new Date();,直接使用传入的日期数据 - 用
flat()处理Google Sheets传入的二维数组(单元格范围数据默认是二维结构) - 增加过滤逻辑
filter(item => item instanceof Date),避免处理空值或非日期内容 - 时区参数调整为你实际需要的时区(比如你示例里的GMT+06:30),防止日期显示偏移
- 用
,作为分隔符拼接,完全匹配你期望的输出格式
使用方式不变,依然用=ConcatIfDates(GetColoredValue(COLUMN(A2),ROW(A2),COLUMN(F2))),就能得到27-Jun-22, 13-Oct-22, 27-Jun-22这样的结果。
内容的提问来源于stack exchange,提问作者Akari
相关产品推荐
相关产品推荐

