Google脚本文档openbyid权限错误

问题描述:

如果在Google Doc的onOpen函数中,我通过以id打开电子表格来创建电子表格对象,如果我使用菜单系统,如何将该对象传递给其他函数? (更长的解释如下)Google脚本文档openbyid权限错误

我有一个谷歌文档脚本,将在特定时间拍摄文档的快照,然后将其导出到.docx并使用快照的URL更新电子表格。这是通过一个菜单选项开始,像这样:

function onOpen(e) { 
DocumentApp.getUi().createMenu('Senate Secretary Menu') 
    .addItem('Snapshot', 'snapshot') 
    .addToUi(); 
} 

从调用函数的快照()

function snapshot() { 
//open the spreadsheet using id 
var ss=SpreadsheetApp.openById('spreadsheet_id'); 

这会产生一个you do not have permission to call openbyid()错误

据我所知,谷歌脚本禁止openbyid()在自定义函数中被调用(我将它解释为电子表格中的函数,但是是whatevs)。 如果我更改onOpen函数以包含OpenById()调用它将起作用。

function onOpen(e) { 
DocumentApp.getUi().createMenu('Senate Secretary Menu') 
    .addItem('Snapshot', 'snapshot') 
    .addToUi(); 
var ss=SpreadsheetApp.openById('spreadsheet_id'); 
} 

我的问题是如何将文件对象从onOpen函数传递给快照函数?

+0

只是为了澄清,您是使用实际的电子表格ID(字母和数字的长序列)还是字符串“spreadsheet_id”? – Brady

+0

它实际上是一串很长的数字。但是我发现下面的错误。 – rwreed

对于任何人也可能有这个问题。我从Google Quickstart中获取了菜单模板,但它在标题注释块中有@OnlyCurrentDoc标志,我错过了。解决了这个问题并解决了我的问题。