Я сделал очень простую версию, которая все еще показывает проблему и может быть просмотрена и протестирована кем угодно.Функция отправки GAS в листах не работает как другой пользователь
Моя проблема в событиях onclick никогда не вызывается, если вы не являетесь владельцем, даже когда лист делится с миром.
Пожалуйста, перейдите по ссылке ниже, чтобы попробовать этот вопрос
Вот простой код:
//Global reused variables
var ss = SpreadsheetApp.getActiveSpreadsheet();
var pageTxt;
var html;
function onLoad(){
pageTxt = '';
pageTxt += '<h2><b>Click on this button, it should pop up and say Hello World but it does not work when it is not run as the owner, why?</b></h2><br><br>';
pageTxt += '<TR><TD><input onclick="formSubmit()" type="button" value="Submit" style="height:30px; width:100px" /></TD><TD> </TD>';
pageTxt += '<script type="text/javascript"> document.getElementById("UniqueCode").focus(); function formSubmit() { google.script.run.EventHandler(document.forms[0]); } </script>';
html = HtmlService.createHtmlOutput(pageTxt);
html.setTitle("Simple Example of my issue");
ss.show(html);
}
//RecieveUniqueCode
function EventHandler(form){
Browser.msgBox("Hello World");
onLoad();
}
Я надеюсь, кто-то, чтобы работать почему при нажатии кнопки отправки в качестве другого пользователя он ничего не делает.
Если добавить еще одну кнопку, чтобы закрыть форму это работает:
<input type="button" value="Close" onclick="google.script.host.close()" />
Он просто не может запустить пользовательскую функцию в сценарии приложения.
Update:
Я попытался вручную запустить функцию как другой пользователь и poped и попросил разрешения
Я думаю, что я близок к пониманию вопроса, хотя как владелец я дал пользователю разрешение на мой лист, потому что скрипт взаимодействует с листами, кажется, что пользователь также должен дать моему сценарию разрешение играть с листом, что немного странно. Поэтому я предполагаю, что мне нужно найти способ заставить его попросить разрешения вместо того, чтобы ничего не делать, когда ему это нужно.
Теперь я также могу подтвердить, что принятие разрешения означает, что теперь работает простой скрипт. Он не дает опции, когда автозагрузка, то есть загрузка, но при запуске функции вручную из редактора сценариев. как я могу это сделать во время выполнения? Любые идеи?
Заранее за вашу помощь.
Проверен вывод HTML и выглядит нормально «Так должно быть, что этот метод вызова сценария не работает для других целей при его совместном использовании. Кто-нибудь знает, почему или правильный способ выполнить скрипт от кнопки в html? – AndrewT
Не знаете, какая разница в этой конкретной ситуации, но какие разрешения установлены для этого другого пользователя? Просто просмотрите или отредактируйте? – Gerneio
Любой, у кого есть эта ссылка, может редактировать и пользователь вошел в систему. – AndrewT