我有一个电子表格,其中 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:无法读取 null 的属性 'getRange'”。我在这里查找了答案,但其中大部分似乎是关于使用包含/绑定的脚本。这是我直接放在脚本编辑器中的脚本,所以应该没问题。将 SpreadsheetApp.getActiveSpreadsheet() 更改为通过电子表格 ID 打开没有帮助。
感谢您的任何建议!
答案 0 :(得分:0)
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);
});
}