【问题标题】:What is causing Cannot call method "getRange" of null是什么导致无法调用 null 的方法“getRange”
【发布时间】: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


【解决方案1】:

在至少 1 种情况下,无论返回什么,都没有命名工作表:data[n][4].toString().replace(/ /g,'')

在第 9 行之后(在您的 Logger.log(data[n][4]) 之后),您可以删除所有内容并写入:

var str = data[n][4].toString().replace(/ /g,'');
var dest = ss.getSheetByName(str)
if (dest) {
  Logger.log(str + " is an actual sheet's name");
  var destRange = dest.getRange(dest.getLastRow()+1,1);
  master.getRange(n+1,1,1,colWidth).copyTo(destRange); 
} else { 
  Logger.log(str + " is not an actual sheet's name.")
}
}// loop
}

日志现在应该有助于找出问题所在。

【讨论】:

  • 试过了,谢谢,但什么也没发生。没有错误,但也没有拆分数据。
  • 我实际上不知道该怎么做。我应该解释说我是一个完全的新手。抱歉,如果我在浪费你的时间。谢谢。
  • 首先运行您的函数,然后在脚本页面中单击查看 > 日志。让我知道日志是否有意义:)
  • 刚刚显示了一个时间戳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
相关资源
最近更新 更多