2016-09-27 124 views
0

如果在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

回答

0

對於任何人也可能有這個問題。我從Google Quickstart中獲取了菜單模板,但它在標題註釋塊中有@OnlyCurrentDoc標誌,我錯過了。解決了這個問題並解決了我的問題。