2016-04-19 1 views
0

Я сделал очень простую версию, которая все еще показывает проблему и может быть просмотрена и протестирована кем угодно.Функция отправки GAS в листах не работает как другой пользователь

Моя проблема в событиях onclick никогда не вызывается, если вы не являетесь владельцем, даже когда лист делится с миром.

Пожалуйста, перейдите по ссылке ниже, чтобы попробовать этот вопрос

My Simple Example to Try

Вот простой код:

//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 и попросил разрешения

enter image description here

Я думаю, что я близок к пониманию вопроса, хотя как владелец я дал пользователю разрешение на мой лист, потому что скрипт взаимодействует с листами, кажется, что пользователь также должен дать моему сценарию разрешение играть с листом, что немного странно. Поэтому я предполагаю, что мне нужно найти способ заставить его попросить разрешения вместо того, чтобы ничего не делать, когда ему это нужно.

Теперь я также могу подтвердить, что принятие разрешения означает, что теперь работает простой скрипт. Он не дает опции, когда автозагрузка, то есть загрузка, но при запуске функции вручную из редактора сценариев. как я могу это сделать во время выполнения? Любые идеи?

Заранее за вашу помощь.

+0

Проверен вывод HTML и выглядит нормально «Так должно быть, что этот метод вызова сценария не работает для других целей при его совместном использовании. Кто-нибудь знает, почему или правильный способ выполнить скрипт от кнопки в html? – AndrewT

+0

Не знаете, какая разница в этой конкретной ситуации, но какие разрешения установлены для этого другого пользователя? Просто просмотрите или отредактируйте? – Gerneio

+0

Любой, у кого есть эта ссылка, может редактировать и пользователь вошел в систему. – AndrewT

ответ

0

Google referance

Авторизация требуется для выполнения этого действия.

Эта ошибка указывает на то, что в сценарии отсутствует авторизация, необходимая для запуска. Когда сценарий запускается в редакторе сценариев или из пользовательского пункта меню, пользователю предоставляется диалог авторизации. Однако, когда сценарий запускается как служба, встроенный в страницу Сайтов Google или запускаемый из триггера, диалог не может быть представлен, и эта ошибка отображается. Чтобы авторизовать сценарий, откройте редактор сценариев и запустите любую функцию. Чтобы избежать этой ошибки, не забудьте запустить сценарий один раз в Редакторе скриптов после добавления новых сервисов или возможностей в ваш скрипт.

Поэтому, если вы не счастливы, что каждый пользователь, которого вы отправляете, тоже должен запускать его вручную в первый раз из редактора сценариев, тогда этот недостаток остановит вас от когда-либо развертывания автоматизированного листа для всех. Очень разочарован в приложениях google :(

+0

Там должен быть другой способ. Я знаю, что есть. – Gerneio

+0

Надеюсь, что вы правы, но ничего не можете найти – AndrewT

1

Я думаю, что вы направляетесь в правильном направлении. Если я открою консоль в chrome и посмотрю, что происходит, когда нажимается кнопка, появляется всплывающая подсказка. Смотрите скриншот.

Dev console error

Не уверен, но почему и как разрешить его. Хотя я продолжу расследование.

Обновление: Открыл редактор сценариев и попытался выполнить одну из функций вручную, затем скрипт запросил авторизацию. После авторизации я вернулся к листу, и функция formSubmit() работала должным образом (никаких ошибок в консоли).

+0

Спасибо, должен быть способ заставить его запросить авторизацию, BTW, как вы узнали эту ошибку, так как это могло бы сэкономить некоторое время. – AndrewT

+0

Какой браузер вы используете? – Gerneio

+0

Chrome тоже, извините новичок в этом. – AndrewT

Смежные вопросы