如何在目标表格设置纯文本格式?解决Google Scripts复制格式异常
解决Google Sheets复制内容时格式错乱(文本变日期)的问题
你的问题出在Google Sheets的自动格式识别机制:当使用setValues()写入数据时,表格会自动尝试识别内容格式,像1, 2这种格式会被误判为日期(1月2日)。要避免这种情况,需要先将目标区域设置为纯文本格式,再写入数据。
修改后的代码如下:
function cloneGoogleSheet2(ssA, ssB) { // 源文档 var sss = SpreadsheetApp.openById('1Cd5nYV7kJ8lD6qaOqMes3Ubphlz1WdlZycL3ynyOeNY'); // 源工作表 var ss = sss.getSheetByName('ALTERAÇÕES'); // 获取源数据范围 var SRange = ss.getDataRange(); var A1Range = SRange.getA1Notation(); var SData = SRange.getValues(); // 目标文档 var tss = SpreadsheetApp.openById('1Cd5nYV7kJ8lD6qaOqMes3Ubphlz1WdlZycL3ynyOeNY'); // 目标工作表 var ts = tss.getSheetByName('FORMULÁRIO'); // 清空目标工作表内容 ts.clear({ contentsOnly: true }); // 关键步骤:先将目标区域设置为纯文本格式 var targetRange = ts.getRange(A1Range); targetRange.setNumberFormat('@'); // 写入源数据 targetRange.setValues(SData); }
核心修改说明
setNumberFormat('@'):@是Google Sheets中代表纯文本的格式代码,执行这一步后,目标区域的所有单元格都会强制以纯文本形式存储内容,不会自动转换格式。- 必须先设置格式,再写入数据:如果先写数据再改格式,已经被转换的日期无法还原为原始文本,先设格式能从根源避免自动转换问题。
内容的提问来源于stack exchange,提问作者glpsx
相关产品推荐
相关产品推荐

