SpreadsheetApp.getActive()为表单返回null

时间:2015-10-12 09:58:20

标签: google-apps-script

我有一个包含以下脚本的Google表单。每次失败,因为SpreadsheetApp.getActive()返回null。关于为什么的任何想法?

function onOpen(e) {
  var courseSheet = SpreadsheetApp.getActive().getSheetByName("Courses");
}

我得到的错误是TypeError: Cannot call method "getSheetByName" of null. (line 6, file "")

我在网上找到了很多以这种方式显示用法的例子,所以我确信这是可能的。这可能是我的表单链接到的电子表格的权限问题吗?

2 个答案:

答案 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());