如何通过Apps Script仅复制值到新Google表格并避免#REF错误?
解决方案
要解决复制公式导致#REF错误的问题,你需要替换原脚本中直接复制工作表的逻辑,改为仅复制单元格的值(可附带格式)。以下是修改后的完整脚本:
function exportTab() { const ss = SpreadsheetApp.openByUrl(""); // 填入你的目标表格URL const today = new Date(); // 从Overview表B4提取名称,拼接年份生成新表格标题 const baseName = ss.getSheetByName("Overview").getRange("B4").getValue(); const newSpreadsheet = SpreadsheetApp.create(`${baseName} ${today.getFullYear()} - Square Programming`); // 指定要复制的源工作表(如需固定表名,替换为ss.getSheetByName("你的表名")) const sourceSheet = SpreadsheetApp.getActiveSheet(); const sourceDataRange = sourceSheet.getDataRange(); // 获取新表格的默认工作表 const targetSheet = newSpreadsheet.getSheets()[0]; // 仅复制值和格式(若只需纯值,替换为PASTE_VALUES) sourceDataRange.copyTo( targetSheet.getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES_AND_FORMATTS, false ); // 可选:将新工作表重命名为源表的名称 targetSheet.setName(sourceSheet.getName()); }
关键改动说明
- 移除原脚本中未使用的
year变量,简化代码结构 - 改用单元格范围的
copyTo方法,通过指定CopyPasteType参数精准控制粘贴内容:PASTE_VALUES_AND_FORMATTS:保留值和单元格格式(推荐,保持原排版)PASTE_VALUES:仅粘贴纯文本值
- 新增工作表重命名逻辑,让新表的标签名与源表一致,便于识别
内容的提问来源于stack exchange,提问作者Mohkai
相关产品推荐
相关产品推荐

