I have a problem with a Google script for a spreadsheet. I have a script installed onEdit through the Resources menu. The script copies some cells from an unprotected sheet to a protected sheet. The script works fine when I'm logged in to my account (I'm the owner of the spreadsheet), but runs into permission errors when run from a collaborator's account who has no access to the protected sheet. Shouldn't the script run as me (the account owner) and not run into permission issues? Another script in the same spreadsheet that runs onFormSubmit is able to edit a protected sheet when a collaborator submits a form, even though he has no access to the protected sheet. This suggests the problem is not with permissions per se, but that the problem is specific to the onEdit trigger, right?
2 Answers
2
votes
This is expected behavior. The onEdit trigger is one of three 'simple triggers'.
From the docs: "These simple triggers run in response to actions in Google Spreadsheets, and they run as the active user. For example, if Bob opens the Spreadsheet, then the onOpen function runs as Bob, irrespective of who added the script to the Spreadsheet. For this reason, the simple triggers are restricted in what they are permitted to do:
- They cannot execute when the Spreadsheet is opened in read-only mode.
- They cannot determine the current user.
- They cannot access any services that require authentication as that user. For example, the Google Translate service is anonymous and can be accessed by the simple triggers. Google Calendar, Gmail, and Sites are not anonymous and the simple triggers cannot access those services.
- They can only modify the current Spreadsheet. Access to other Spreadsheets is forbidden.
triggeredOnEdit
as an onEdit trigger running as me (the owner). When I use the spreadsheet, everything works. When I try it with another account, I run into a permission error when I try to edit a protected sheet. – Fred