Google Scripts: accessing spreadsheet files, TypeError: Cannot call method "openById" of null. (line 2, file "Code") Dismiss

Google Scripts: accessing spreadsheet files, TypeError: Cannot call method "openById" of null. (line 2, file "Code") Dismiss

代码:

function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().openById('https://docs.google.com/a/e4b.us/spreadsheets/d/1DBty8ZiTqZ8MHPkFipjL8wDZqR2Ae9PLrNAQtW2QD2k/edit#gid=0');
var ss = SpreadsheetApp.getActive();
var mylocationInfo   = ss.getRange("A2:B4").getValues();
logger.log(mylocationInfo.getData)

}

我认为删除 url 的非必要方面(例如 /edit#gid=0)可能会有所帮助。没有。

这是 URL 确实有效的证据:

编辑 我试过没有完整的 URL,只是使用实际 ID,我收到了相同的消息。

编辑 我删除了函数“.getActiveSpreadSheet”并得到错误"Bad Value" 我尝试将 getById 更改为 getByUrl,输入完整的 URL,但我收到错误消息,指出缺少 ID 的文件。如屏幕截图所示,该文件存在。 url 是在执行脚本之前立即复制粘贴的。 changed:3:07pm

EDIT 我尝试使用 getByUrl 链接到不同的电子表格,但得到了相同的错误消息。已更改 3:10pm

为什么 getById return 为空? 为什么 getByUrl 找不到我的文件?

您正在同时使用:getActiveSpreadsheet()openById()。那是一个冲突。您需要使用其中之一。

您的代码:

var sheet = SpreadsheetApp.getActiveSpreadsheet()
  .openById('https://docs.google.com/a/e4b.us/spreadsheets/d/Your ID/edit#gid=0');
  var ss = SpreadsheetApp.getActive();

另外,您使用的不是 ID,而是 URL。如果你想通过URL获取文件的引用,使用方法:openByUrl()

代码应如下所示:

var ss = SpreadsheetApp.openById('Your ID');
var sheet = ss.getActiveSheet();

变量名ss代表spread sheet。这就是整个 spreadsheet 文件。 sheet 是分布内的一个 sheet 标签sheet。