2012-10-08 38 views
3

當我創建一個訪問電子表格並在腳本中使用它的應用程序腳本庫時,我得到一個權限錯誤(對於下例中的setValue)。 如果我在腳本中調用同一個電子表格函數(然後刪除它),然後調用庫函數,我將永遠不會再次獲得權限錯誤(它是可重現的)。Apps腳本庫許可

你有沒有經歷過這樣的行爲,如果是的話,你是如何解決這個問題的?

感謝

function addRecord(ss, sheetName) { 
    var sheet = ss.getSheetByName(sheetName); 
    sheet.getRange("A1:A1").setValue("Hello World!"); 
} 

腳本

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    MyLib.addRecord(ss, "Sheet1"); 
} 

錯誤消息
「你不具備所需的權限調用SETV Alue「

回答

1

爲了解決這個問題 - 斯蒂芬報告的問題已被確認爲一個問題。我們正在研究這一點。圖書館未正確吸收電子表格中傳遞的權限。

斯特凡 - 如果您願意,請隨時創建一個關於issue tracker的報告。

2

您的腳本必須具有與庫需要的權限相同的權限:如果您知道庫讀取/寫入電子表格或日曆(或其他),則必須爲這些服務授權腳本。 你可以用一些(甚至是虛擬的)函數很容易地做到這一點,它會告訴系統調用所需服務的授權過程。從你所描述的內容看,當你保存腳本時,系統並不檢查庫中的內容,因此腳本在未經授權的情況下寫入電子表格是一種「驚喜」。如果您包括我之前提到的(虛擬)呼叫,腳本將知道您要做什麼並要求在第一次運行嘗試時進行授權。

希望我很清楚。

+0

調用庫中包含的每個服務可能會解決問題,但我認爲從長遠來看這不是一個真正的選擇。 想象一下,你忘了「初始化」一項服務並部署該庫。如果用戶然後調用您的腳本,它只是停止與未指定的權限錯誤。 – Stefan