You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script归档表格:复制静态值遇Range not found错误求助

解决方案

代码错误分析

导致“Exception: Range not found”和公式未清除的核心问题有3个:

  1. 方法名大小写错误:Google Apps Script是大小写敏感的,OpenByID、getID() 应为小写开头的 openById()、getId(),错误写法会直接触发方法不存在的异常。
  2. 范围引用冗余:当已经通过getSheetByName获取到指定工作表对象(如source_sheet),调用getRange时无需再加工作表名前缀(Codex!),否则会在当前活动工作表中查找该范围,导致找不到目标区域。
  3. 目标范围对象错误:copyTo的目标范围应使用目标工作表对象(target_sheet)的getRange方法,而非整个表格对象的getRange。

修正后的完整代码

function archiveSheet () {
  var confirm = Browser.msgBox('Have you fully completed the RTU?', Browser.Buttons.YES_NO);
 
  if(confirm == 'no') {
    Logger.log('The user clicked "NO."');
  }
  if(confirm == 'yes') {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var RTUDate = ss.getRange('Backend!O9').getValue();
    Logger.log(RTUDate);

    var RTUTime = ss.getRange('Backend!O12').getValue();
    Logger.log(RTUTime);

    // 格式化日期时间(注意时区调整,GMT+20可能需要确认是否符合需求)
    var formattedDate = Utilities.formatDate(RTUDate, "GMT+20", "MMMM dd, yyyy");
    var formattedTime = Utilities.formatDate(RTUTime, "GMT+20", "HH:mm");

    // 生成归档文件名称
    var name = ss.getName() + " " + formattedDate + " " + formattedTime;

    // 获取目标文件夹
    var destination = DriveApp.getFolderById("MyDriveIDHere");

    // 复制原表格到目标文件夹
    var file = DriveApp.getFileById(ss.getId());
    var newFile = file.makeCopy(name, destination);

    // 复制静态值到归档表格
    var source_sheet = ss.getSheetByName('Codex');
    // 修正:使用小写openById和getId
    var target_ss = SpreadsheetApp.openById(newFile.getId());
    var target_sheet = target_ss.getSheetByName('Codex');

    // 修正:直接使用工作表内的范围,无需加工作表名前缀
    var source_range = source_sheet.getRange('A2:O');
    // 确保目标范围和源范围大小一致
    var target_range = target_sheet.getRange(source_range.getA1Notation());
    
    // 仅粘贴静态值,覆盖原有公式
    source_range.copyTo(target_range, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  }
}

额外优化说明

  • 用source_range.getA1Notation()获取源范围的A1表示法,确保目标范围和源范围的行列数完全匹配,避免因范围大小不一致导致的异常。
  • 变量名更清晰(如target_ss代替target_sheet_ID),提升代码可读性。
  • 注意时区GMT+20是否符合实际需求,若时区设置错误会导致归档文件名的日期时间不准确。

内容的提问来源于stack exchange,提问作者iCarrington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:01:17