我有一个包含以下脚本的Google表单。每次失败,因为SpreadsheetApp.getActive()
返回null。关于为什么的任何想法?
function onOpen(e) {
var courseSheet = SpreadsheetApp.getActive().getSheetByName("Courses");
}
我得到的错误是TypeError: Cannot call method "getSheetByName" of null. (line 6, file "")
我在网上找到了很多以这种方式显示用法的例子,所以我确信这是可能的。这可能是我的表单链接到的电子表格的权限问题吗?
答案 0 :(得分:1)
我认为问题可能是使用
.getActive()
来自表格。打开表单时,没有正在使用的活动电子表格。请尝试改为:
SpreadsheetApp.openById('id')
您可以从网址中获取ID。看起来像这样:
d / 10r8Pv03S8qfMiA7dET2KNRmy0DEEExxPld42HjW-aX2c /
斜杠之间的数字和字母" /"是id。
答案 1 :(得分:0)
根据@Albrecht 的诊断和解决方案进行开发,我使用以下方法动态查找电子表格:
let form = FormApp.getActiveForm();
let spreadsheet = SpreadsheetApp.openById(form.getDestinationId());
如果您将脚本附加到电子表格并想要获取表单,您可以使用:
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let form = FormApp.openByUrl(spreadsheet.getFormUrl());