Google Apps Script 时间戳数组时分秒批量归零的实现问题
修正方案
你遇到的问题核心是:getValues() 方法返回的是二维数组,结构为[行索引][列索引],你读取的是A列1到10行数据,需要取rn[i][0]才能拿到对应行的Date对象,直接对数组整体调用setHours方法肯定无法生效。
修正后的完整代码如下:
function timestampFormat(){ var SS = SpreadsheetApp.openById('xxx') var sheet = SS.getSheetByName("S1") // 读取A列1-10行的所有值 var rn = sheet.getRange(1,1,10).getValues(); var formDates = []; for (var i = 0; i < rn.length; i++){ // 取出当前行的日期值,单列数据的列索引为0 var currentDate = rn[i][0]; // 仅对有效日期做处理,避免空单元格、非日期内容报错 if(currentDate instanceof Date) { var formattedDate = new Date(currentDate.setHours(0,0,0,0)); // 按二维数组结构存储,方便后续直接写回表格 formDates.push([formattedDate]); } else { // 非日期内容保持原样 formDates.push([currentDate]); } } Logger.log(formDates); // 如需将处理后的结果写回原A列1-10行,取消下方注释即可 // sheet.getRange(1,1,formDates.length,1).setValues(formDates); }
补充说明
- 如果需要处理A列所有有内容的行,可将读取范围替换为
sheet.getRange(1,1,sheet.getLastRow(),1),不用手动固定行数 - 所有结果按二维数组结构存储,适配Google Sheets的
setValues方法参数要求,写回数据不用额外转换

内容的提问来源于stack exchange,提问作者S1ARHE1
相关产品推荐
相关产品推荐

