首页 > 解决方案 > 突然之间,这个功能存在多年的 Google 表格出现了错误。他们最近有改变吗?

问题描述

我前段时间写了一个函数来确定工作簿中的工作表是否已经存在。这是功能:

function SheetNameExists(name){
  return (ActiveSpreadSheet().getSheetByName(name).toString().indexOf(name) != 0);
}

在过去一个月左右的时间里,我突然得到了一个TypeError: Cannot call method "toString" of null. (line 105, file "Code"). 第 105 行是return语句。

在此错误开始发生之前,我对此工作表上的任何脚本都没有任何问题。我没有更改代码隐藏中的任何内容。

Google 是否在不提供弃用支持的情况下进行了某些更改?


编辑:ActiveSpreadsheet()当我写完所有这些时,我忘记了不是内置函数。这是我为获取它而编写的代码:

function ActiveSpreadSheet(){
  return SpreadsheetApp.getActiveSpreadsheet();
}

标签: google-apps-script

解决方案


我质疑这以前是如何工作的。getSheetByName(name) 将返回一个 Sheet 对象。toString() 只返回字符串“Sheet”。因此,如果名称为“Sheet”,它将仅匹配名称。但是,您的问题很简单。

var active = SpreadsheetApp.getActiveSpreadsheet();  // For sure the active spreadsheet
var sheet = active.getSheetByName(name);  // Where name is a string representing a sheet name
if( sheet ) return true;  // Sheet with name exists
return false;  // Other wise sheet is null or does not exist

推荐阅读