WebApp: способ захвата пользователя приложения? - PullRequest
0 голосов
/ 01 мая 2020

Я использую

var user = Session.getActiveUser().getEmail();

в скрипте на внешнем интерфейсе перед отправкой формы, но выдает ошибку:

Сеанс не определен

Веб-приложение будет работать как владелец скрипта, а не как пользователь, поэтому я не могу использовать код в бэкэнд-скрипте. Есть ли вызов внешнего интерфейса, который получит имя пользователя, или я должен заставить их сказать мне? Это приложение одно из домена, поэтому оно должно быть несколько доверенным.

1 Ответ

2 голосов
/ 01 мая 2020

Session.getActiveUser() вернет адрес электронной почты текущего пользователя, если он находится в одном домене.

Получает информацию о текущем пользователе. Если политики безопасности не разрешают доступ к личности пользователя, User.getEmail () возвращает пустую строку. Обстоятельства, при которых адрес электронной почты доступен, различаются: например, адрес электронной почты пользователя недоступен ни в каком контексте, который позволяет запускать сценарий без авторизации этого пользователя, например простой триггер onOpen (e) или onEdit (e), пользовательская функция в Google Sheets или веб-приложение, развернутое для «выполнения от имени» (то есть, авторизовано разработчиком, а не пользователем). Однако эти ограничения, как правило, не применяются, если разработчик запускает сценарий самостоятельно или принадлежит к тому же домену G Suite, что и пользователь.

Session.getEffectiveUser() с другой стороны, вернет пользователя, для которого настроено выполнение веб-приложения.

Получает информацию о пользователе, от имени которого выполняется скрипт. Если сценарий является веб-приложением, для которого задано «исполнять как я» (разработчик), возвращается учетная запись пользователя разработчика. Если сценарий выполняется с помощью устанавливаемого триггера, возвращается учетная запись пользователя, который создал триггер. В большинстве других сценариев ios это возвращает ту же учетную запись, что и getActiveUser ().

Так что если вам нужна электронная почта пользователя на внешнем интерфейсе, вам нужно будет получить ее на внутреннем интерфейсе с помощью Session.getActiveUser() и передать ее внешнему интерфейсу с помощью скриптлетов когда вы .evaluate() или вызываете функцию на стороне сервера со стороны клиента JavaScript, через google.script.run .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...