如何解决谷歌应用脚本错误:" TypeError:无法调用方法" getRange"为null。 (第16行,文件"代码")"调试以下脚本时:
function getEmails_(q) {
var emails = [];
var threads = GmailApp.search(q);
for (var i in threads) {
var msgs = threads[i].getMessages();
for (var j in msgs) {
emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
.replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')
]);
}
}
return emails;
}
function appendData_(sheet, array2d) {
sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}
function saveEmails() {
var array2d = getEmails_("Still looking for Python Programming help");
if (array2d) {
appendData_(SpreadsheetApp.getActiveSheet(), array2d);
}
}
答案 0 :(得分:1)
您是否设置了工作表变量?
var sheet = SpreadsheetApp.getActiveSheet();
执行Logger.log(array2d);
检查数组中是否正在设置数据。
这是因为它无法找到这张纸。
我有时会遇到此错误,并且必须重命名工作表才有效。这很奇怪。
答案 1 :(得分:0)
您正试图访问getRange()
上的null sheet
,因为在您的上下文中SpreadsheetApp.getActiveSheet()
返回null
(即没有有效的电子表格)
更多上下文可以帮助您找到为您的函数提供有效电子表格的方法。
您可以通过实例打开电子表格:
SpreadsheetApp.open(file)
SpreadsheetApp.openById(id)
SpreadsheetApp.openByUrl(url)
然后将其设为有效SpreadsheetApp.setActiveSpreadsheet(newActiveSpreadsheet)
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app
还有其他方法可以激活电子表格,例如触发触发器时(例如notifyOnFormSubmit
)。
为确保您拥有有效的电子表格,您可以在使用前测试SpreadsheetApp.getActiveSheet()
:
var spreadsheet = SpreadsheetApp.getActiveSheet();
if (spreadsheet) {
Logger.log('spreadsheet url:' + spreadsheet.getUrl());
}