【问题标题】:TypeError: Cannot call method "getRange" of null. (line 4, file "Code"TypeError:无法调用 null 的方法“getRange”。 (第 4 行,文件“代码”
【发布时间】:2019-01-19 21:26:31
【问题描述】:

我正在尝试删除包含特定字符串“X”的特定行。

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('delete containing');
  var r = s.getRange('A:A');
  var v = r.getValues();
  for(var i=v.length-1;i>=0;i--)
    if(v[0,i]=='Substitution: ')
      s.deleteRow(i+1);
};

但我得到以下错误:

TypeError:无法调用方法“getRange of null。(第 4 行,文件“代码”)。

谁能帮我解决这个错误?谢谢

【问题讨论】:

  • 工作表名称错误

标签: google-apps-script google-sheets


【解决方案1】:

来自documentation: getSheetByName() "如果没有给定名称的工作表,则返回 null。"所以你需要处理它,查看插入的 if 块:

function deleteRows() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName('delete containing');
    if (s === null) {
      ui = SpreadsheetApp.getUi();
      ui.alert("No worksheet of that name"); // Note: displays in the worksheet GUI, not the scripts editor.
      return false;
    }
    var r = s.getRange('A:A');
    var v = r.getValues();
    for(var i=v.length-1;i>=0;i--)
      if(v[0,i]=='Substitution: ') // [sic] jshint kicking up a storm about this line!
        s.deleteRow(i+1);
  }

【讨论】:

  • 但是如果具有给定名称的工作表存在(因为我已经创建了谷歌电子表格),为什么这不起作用以及如何解决这个问题?
  • 查看您提供的图片:您的电子表格名称是“删除包含”,但我们看不到其中的各个工作表电子表格。您是否会对电子表格与其包含的工作表之间的区别感到困惑?为了使您的代码正常工作,需要有一个名为“删除包含”的工作表。
  • 恐怕“不工作”并不能真正帮助任何人帮助你。我建议您阅读How do I ask a good question?,然后再提出一个新的、具体的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
相关资源
最近更新 更多