【问题标题】:TypeError: Cannot read property 'getRange' of nullTypeError:无法读取 null 的属性“getRange”
【发布时间】:2021-08-20 19:43:24
【问题描述】:

我有一个电子表格,其中包含 A:Z 列中的数据。 AA 列中是工作簿中工作表的名称。我正在尝试将 A:Z 中的数据复制到与 AA 中同名的工作表中。我发现这个脚本看起来很有希望:

function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CLAIMED");
  let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())
  for (var i = 1; i <= range.getLastRow(); i++) {
    let sourceval = sheet.getRange(i, 1, 1, range.getLastColumn());
    let destname = sheet.getRange(i, range.getLastColumn()).getValue();
    let destsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(destname);
    sourceval.copyTo(destsheet.getRange(destsheet.getLastRow() + 1, 1));
  }
}

但是,我收到错误“TypeError:无法读取属性 'getRange' of null”。我在这里查找了答案,但其中大多数似乎是关于使用包含/绑定的脚本。这是我直接放在脚本编辑器里的脚本,应该没问题。将 SpreadsheetApp.getActiveSpreadsheet() 更改为通过电子表格 ID 打开没有帮助。

感谢您的任何建议!

【问题讨论】:

标签: google-apps-script


【解决方案1】:
function myFunction() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("CLAIMED");
  const rg = sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn());
  const vs = rg.getValues();
  vs.forEach((r,i)=>{
    let lc = r.length - 1;
    let s = ss.getSheetByName(r[lc]);
    r.pop();
    s.getRange(1,1,1,lc).setValues(r);
  });
}

【讨论】:

  • 这给了我同样的错误,但在第 10 行和第 6 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2022-01-12
  • 2021-12-04
相关资源
最近更新 更多