So I have encountered a problem in the application I am writing using google spreadsheets and app-script. I have put together a step by step guid to reproduce it.
Summary: any script that uses SpreadsheetApp.openByUrl() and SpreadsheetApp.openById() works OK when called from inside the script editor but gives errors when called from inside even the same spreadsheet that has that script inside it.
Error Messages:
Error You do not have permission to perform that action. (line ?).
Steps to reproduce it:
- Make a new Google Spreadsheet
- Open its Script Editor ( Tools menu >> Script Editor... )
- Choose Blank Project
Paste in this code
function demo1() { return "cat"; } function demo2() { return [["bob", "fred"], ["x", "y"]]; } function demo3() { Logger.log("demo3-1") ss = SpreadsheetApp.openByUrl("[==URL==]") name = ss.getName() Logger.log("demo3-2 " + name) return name } function demo4() { Logger.log("demo4-1") ss = SpreadsheetApp.openById("[==id==]") name = ss.getName() Logger.log("demo4-2 " + name) return name }
Change the "[==URL==]" and "[==id==]" to refer to your own document
Save the script
From the Run menu choose demo1. This will trigger a question about privileges. Grant it the privileges it asks for. ( asks for access to your Google Drive )
Go back to the spreadsheet itself
Set the following cells to have these formulae:
A1 : =demo1() C2 : =demo2() F1 : =demo3() h1 : =demo4()
Note that the first 2 work, so the spreadsheet is seeing the script project and able to run code from it ( so it has permission to run code from that script ) but the last two do not work and complain that it does not have permission to perform that action.
So how do I fix this? Am I doing something wrong or is there an underlying problem ?
customfunction
. Do you? For me it works fine inside script editor. But on using in sheet formula I have getYou do not have permission to call openById
. – Vachell