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

Google Apps Script跨标签运行报错:Range Not Found问题求助

问题修复:跨标签运行脚本时找不到命名范围的错误

问题根源

原代码第5行const tableCol = ss.getRange("RepPrTracking").getColumn();会在当前活动的工作表中查找RepPrTracking这个命名范围,但该范围仅存在于以"Week"开头的标签页中。当你在非Week标签页运行脚本时,当前活动表没有这个命名范围,就会抛出Range Not Found错误。

修复后的代码

function createMaxList() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const target = ss.getSheetByName('Rep PR Data');
  const sheets = ss.getSheets();
  // 先找到第一个Week标签页,从中获取RepPrTracking的列号
  const firstWeekSheet = sheets.find(s => s.getName().match(/Week[\s\S]\d/));
  if (!firstWeekSheet) {
    SpreadsheetApp.getUi().alert("未找到以Week开头的标签页");
    return;
  }
  const tableCol = firstWeekSheet.getRange("RepPrTracking").getColumn(); 
  const results = [['Week', 'Exercise', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10','e1RM']];

  sheets.forEach(s => { 
    const name = s.getName()
    if (!name.match(/Week[\s\S]\d/)) {
      return;
    }

    s.getRange(3, tableCol, s.getLastRow() - 2, 12).getValues()
      .forEach((row) => {
        const [exc] = row
        if (exc == "" || exc == "Reps:" || !exc) {
          return;
        }
        results.push([name, ...row])
      })
  })

  target.getDataRange().clearContent()
  target.getRange(1, 1, results.length, results[0].length).setValues(results)
}

修改说明

  1. 新增firstWeekSheet:通过find方法从所有工作表中筛选出第一个以"Week"开头的标签页,确保我们能在正确的工作表中获取RepPrTracking命名范围。
  2. 增加异常判断:如果找不到任何Week标签页,弹出提示并终止脚本,避免后续报错。
  3. 调整tableCol的获取方式:从找到的Week工作表中获取列号,不再依赖当前活动表,这样无论在哪个标签页运行脚本,都能正确获取目标列。

如果每个Week标签页的RepPrTracking列位置可能不同,也可以在遍历每个Week表时单独获取该表的列号,修改如下:

sheets.forEach(s => { 
  const name = s.getName()
  if (!name.match(/Week[\s\S]\d/)) {
    return;
  }
  // 每个Week表单独获取RepPrTracking的列号
  const tableCol = s.getRange("RepPrTracking").getColumn();
  s.getRange(3, tableCol, s.getLastRow() - 2, 12).getValues()
    .forEach((row) => {
      const [exc] = row
      if (exc == "" || exc == "Reps:" || !exc) {
        return;
      }
      results.push([name, ...row])
    })
})

这种方式更灵活,适合不同Week表列位置不一致的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:53:12