如何防止Google Apps Script将Google Sheets中日期、时长转为时间戳
Google Sheets 员工ID替换脚本修复方案(保留日期/时长格式)
问题根因
原脚本对所有单元格值统一执行toString()转换,而Google Sheets中的日期、时长本质是特殊格式的数值,强制转字符串后会变为完整的时间戳文本,写回表格后就会丢失原有格式,破坏值的原有类型。
修复后的完整代码
你可以直接把原有代码全部替换为下面的内容:
function runReplaceInSheet(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var values = sheet.getDataRange().getValues(); // 替换ID,需要新增替换规则就复制下面这行修改参数即可 replaceInSheet(values, 'SR1193CS', 'Shyam Reganti'); // 新增替换规则示例:replaceInSheet(values, '其他员工ID', '对应的员工姓名'); sheet.getDataRange().setValues(values); } function replaceInSheet(values, to_replace, replace_with) { for(var row in values){ var replaced_values = values[row].map(function(original_value) { // 仅当单元格值为字符串、且包含待替换的员工ID时才执行替换,日期、时长、数字等类型值直接保留 if (typeof original_value === 'string' && original_value.includes(to_replace)) { return original_value.replace(to_replace, replace_with); } else { return original_value; } }); values[row] = replaced_values; } }
使用说明
- 无需修改其他逻辑,仅需在
runReplaceInSheet函数中按照注释示例增加你的替换规则即可 - 运行时和之前操作一致,执行
runReplaceInSheet函数即可,所有日期、时长、数字类单元格都会保留原有格式不会被修改
内容的提问来源于stack exchange,提问作者Shyam Reganti
相关产品推荐
相关产品推荐

