将Google Sheets数据复制到另一工作簿:日期公式转静态文本
解决Google Sheets脚本复制日期格式为静态文本的问题
你的问题出在getValues()方法上——它会读取单元格的原始数据值,而非显示出来的格式化文本。要保留TEXT公式生成的日期格式,只需将获取数据的方法替换为getDisplayValues(),这个方法会直接读取单元格当前显示的文本内容。
修改后的完整代码如下:
var sourceSpreadsheetID = "ID1"; var sourceWorksheetName = "Overview"; var targetSpreadsheetID = "ID2"; var targetWorksheetName = "Overview Static"; function importData() { var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID); var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName); var thisData = thisWorksheet.getDataRange(); //Uncomment line 11 below and comment out line 9 if you want to sync a named range. Replace "teamBugs" with your named range. //var thisData = thisSpreadsheet.getRangeByName("data"); var toSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetID); var toWorksheet = toSpreadsheet.getSheetByName(targetWorksheetName); var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns()) // 获取单元格显示的格式化文本,而非原始值 toRange.setValues(thisData.getDisplayValues()); }
关键修改说明
- 替换
thisData.getValues()为thisData.getDisplayValues():前者返回单元格的原始数据(比如日期对应的序列号或未格式化的数值),后者返回用户看到的格式化文本,完美匹配你需要的01/01/2020 11:20 AM格式。 - 无需额外处理公式列,源表中TEXT公式生成的格式会直接被复制为静态文本。
内容的提问来源于stack exchange,提问作者Mee
相关产品推荐
相关产品推荐

