Как получить свойство пользователя для «активного пользователя» в пользовательской функции скрипта приложений Google - PullRequest
1 голос
/ 12 июня 2019

Я опубликовал автономную надстройку для таблиц Google Apps Script, хотя у меня возникла проблема с использованием PropertiesService.getUserProperties() в пользовательской функции.

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

Так кто же является активным пользователем общей таблицы? Я не хочу, чтобы все средства просмотра электронных таблиц получали сохраненные данные для создателя электронных таблиц. Что-то я делаю не так в коде или в опции "Cloud Platform project" ?

Другими словами, как я могу получить разные данные, сохраненные в свойствах пользователя для разных зрителей в общей электронной таблице?

Я пытался получить активную электронную почту пользователя в пользовательской функции, но она не работает.

Обратите внимание, я не могу использовать Session.getActiveUser в пользовательской функции, поскольку пользовательская функция скрипта Google Apps не поддерживает службу сеансов. Это получит недопустимое исключение разрешения.

https://developers.google.com/apps-script/guides/sheets/functions#Advanced

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

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

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

Если учетная запись Google является общей электронной таблицей для учетной записи Google B.

  1. В пользовательской функции все они получают пользовательское свойство А.
  2. С веб-страницы вызовите функцию сервера через script.run, и A, и B могут получить свои собственные пользовательские свойства.
  3. При использовании запускаемого по времени триггера с возможностью установки, функция триггера будет сработать дважды, каждый из которых получит свое собственное пользовательское свойство.
  4. Из устанавливаемого документа триггера, такого как onEdit, для сценария редактора, он будет запущен дважды, как триггер, управляемый временем;но для автономного сценария и A, и B должны установить триггер, или он будет запущен для каждого пользователя только один раз ------ если A и B установили триггер, он будет запущен дважды.Забавно, мы установили триггер для электронной таблицы, но общая электронная таблица работает следующим образом для разных пользователей, работающих над ней ...

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

0 голосов
/ 16 июня 2019

Пользовательские функции не могут получить доступ к PropertiesServices.userProperties() (возможно, исключением является владелец электронной таблицы).

Согласно https://developers.google.com/apps-script/guides/sheets/functions

В отличие от большинства других типов скриптов приложений, пользовательские функции никогда не запрашивают у пользователей авторизацию доступа к личным данным. Следовательно, они могут вызывать только те службы, которые не имеют доступа к личным данным, а именно:

Хотя Свойства включены в список, и для этой службы нет примечаний, поскольку пользовательская функция не просит пользователей авторизоваться для доступа к личным данным, она не должна возвращать PropertiesServices.userProperties() как потенциально может хранить личные данные пользователя.

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