0

雖然按照這裏的教程:https://developers.google.com/apps-script/articles/building-sites-app-part1時間預訂酒店實例的谷歌Apps腳本教程失敗,錯誤「無法調用‘無效的getColumnWidth’行327

我在複製和修改示例代碼等等。當我嘗試運行它,我得到的錯誤:

類型錯誤:。無法調用空的 「getLastRow」(行327)

錯誤

這裏是線326,327從該頁面:

326)var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(「TimeBooking」); 327)var lastRow = sheet.getLastRow();

如果我編輯.getSheetByName的字符串以使其目的錯誤,那麼我在第326行發現錯誤,告訴我它找不到該工作表。好,它應該失敗那個測試。 如果我確定第326行是正確的,它將以無錯方式運行,但是第327行會輸出空錯誤。

如果工作表對象無效,爲什麼326行不會提醒我?

注意我會得到相同的錯誤無效無論我直接在應用程序編輯器中運行該代碼,還是我發佈的網址,並從我的網站頁面運行的谷歌應用程序插件..

任何想法?我正在努力學習基礎知識,並難住了我的第一個「複製和粘貼」的例子(哈哈!)

回答

0

當一個錯誤消息說一些關於getColumnWidth你要找一行代碼使用getColumnWidth() (使用命令F或控制F來幫助你)並查看該語句適用於哪個對象。

另外:你有沒有檢查表名?你在你的問題中提到一個表名(「TimeBookingExample」),但你顯示的代碼與另一個表名稱(「TimeBooking」)有關......我有點困惑。

編輯:這個答案的第一部分就沒有意義了,因爲這個問題已經被編輯

+0

哦,對不起在我的問題上面的混亂(我的壞)!我做了一個暫時的補充,試圖通過添加一個帶有getColumnWidth的新命令來尋找問題,該命令也會失敗,並出現相同的空錯誤。 Google示例只有327)var lastRow = sheet.getLastRow();命令在它也失敗,「不能調用null方法sheet.getLastRow」錯誤。我假設表單變量爲空,出於某種原因,任何對它的訪問失敗。我不知道爲什麼它是空的,因爲在openById命令似乎要被罰款。我將編輯我的上述問題,使其連貫一致的例子。 –

+0

我這個名字值得注意的是,我改名爲電子表格從TimeBooking到TimeBookingExample在我的版本。我的源代碼和實際的電子表格都匹配。我將清理問題,因爲我缺胳膊少腿我的描述.. –

+0

我的回答的第二部分是有關......所以是第一部分:-) ......很高興你找到你的錯誤。 –

1

好吧,我想通了 - 我的編輯打破了例子。我在語義上迷失了方向,確實重命名電子表格就是問題所在。

我把整個電子表格的名稱與電子表格中單個表格的名稱混淆了。

由於您使用電子表格ID打開它(這是電子表格的URL中的鍵),因此整個電子表格的名稱是無關緊要的。

電子表格中第一個「工作表」的名稱是相關的,並且必須與源代碼中的ascii名稱匹配。

我不幸將我的電子表格命名爲TimeBookingExample,並沒有注意到電子表格中的第一個表單被命名爲TimeBooking。

因此,getSheetByName()函數需要電子表格中第一個工作表的名稱,而不是整個電子表格文檔的名稱。

326)VAR片= SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName( 「TimeBooking」);

爲什麼326行在失敗時會報錯?這會讓我立即發現我的錯誤..

相關問題