0

在此处遵循教程时:https ://developers.google.com/apps-script/articles/building-sites-app-part1

我复制并修改了示例代码等。当我尝试运行它时,出现错误:

TypeError:无法调用 null 的方法“getLastRow”。(第 327 行)

错误。

这是该页面的第 326、327 行:

326) var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName("TimeBooking"); 第327章

如果我故意编辑 .getSheetByName 的字符串以使其出错,那么我会在第 326 行收到错误消息,告诉我找不到工作表。很好,它应该无法通过该测试。如果我确保第 326 行是正确的,它会静默运行而没有错误,但第 327 行会输出空错误。

如果工作表对象无效,为什么第 326 行没有警告我呢?

请注意,无论是直接在应用程序编辑器中运行此代码,还是发布 URL 并从我的站点页面将其作为 google Apps 小部件运行,我都会收到相同的空错误。

有任何想法吗?我正在尝试学习基础知识,但在我的第一个“复制和粘贴”示例中遇到了困难(哈哈!)

4

2 回答 2

1

好吧,我想通了——我的编辑破坏了这个例子。我迷失了语义,确实重命名电子表格是问题所在。

我将整个电子表格的名称与所述电子表格中单个工作表的名称混淆了。

整个电子表格的名称无关紧要,因为您使用电子表格 ID 来打开它(这是电子表格 URL 中的一个键)。

电子表格中第一个“工作表”的名称是相关的,并且必须与源代码中的 ascii 名称匹配。

不幸的是,我将电子表格命名为 TimeBookingExample,但没有注意到电子表格中的第一张表格名为 TimeBooking。

因此 getSheetByName() 函数需要电子表格中第一张工作表的名称,而不是整个电子表格文档的名称。

326) var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName("TimeBooking");

为什么第 326 行失败时不报错?那会让我立即找到我的错误..

于 2012-12-11T02:13:31.913 回答
0

当一条错误消息说有关getColumnWidth您的信息时,应查找使用的代码行getColumnWidth()(使用命令 F 或控制 F 来帮助您)并查看该语句适用于哪个对象。

另外:您检查过工作表名称吗?您在问题中提到了工作表名称(“TimeBookingExample”),但您显示的代码谈到了另一个工作表名称(“TimeBooking”)......我有点困惑。

编辑: 这个答案的第一部分不再有意义,因为问题已被编辑

于 2012-12-08T01:35:39.907 回答