【发布时间】:2018-05-25 05:04:24
【问题描述】:
我正在尝试按 E 列中的数据拆分工作表 (MASTERS) 中的数据。 数据是一个数字。 我在同一个工作簿中设置了正确命名的目标工作表(例如 3、4、5 等),但每次运行时都会出现错误
TypeError:无法调用 null 的方法“getRange”。 (第 12 行,文件“02。按 E 列拆分”
var ss=SpreadsheetApp.getActiveSpreadsheet();
var master = ss.getSheetByName('MASTER');
var colWidth = master.getMaxColumns();
function copyRowsOnCondition() {
var data = master.getDataRange().getValues();
for(n=0;n<data.length;++n){
if(data[n][4].length<16){
Logger.log(data[n][4])
var dest = ss.getSheetByName(data[n][4].toString().replace(/ /g,''));
var destRange = dest.getRange(dest.getLastRow()+1,1);
master.getRange(n+1,1,1,colWidth).copyTo(destRange);
}
}// loop
}
【问题讨论】:
-
dest工作表名称是什么?您正在记录data[n][4],但将dest设置为data[n][4].toString().replace(/ /g,''),因此您可能会在日志中看到与您实际尝试获取的值不同的值,这会导致错误。错误是说您的同名工作表不存在 -
目标工作表的名称是数字 - 例如从 1 到 10,这与主工作表的 E 列中的数据运行相关。我已经检查了第 4 列中的数据是纯文本,但它似乎确实以不同的方式读取值。奇怪的是,如果它工作正常,我已经从另一个工作表(具有不同的列布局)中提取了这个脚本。
-
12行的代码是什么?并仔细检查是否有一张名为MASTER的工作表。该错误与没有要调用getRange的工作表对象有关 -
这是违规行:var destRange = dest.getRange(dest.getLastRow()+1,1);
-
肯定有一张名为 MASTER 的工作表。谢谢。
标签: google-apps-script google-sheets