Получение всех зрителей электронной таблицы с помощью App Script - PullRequest
1 голос
/ 10 октября 2019

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

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

1 Ответ

0 голосов
/ 10 октября 2019

Ответ:

Невозможно получить список людей, которые открыли ваш файл на Google Диске с помощью Google Apps Script - метод, который возвращает этот список, не существует. Метод getViewers() возвращает список людей с разрешениями на просмотр и комментирование для файла, тогда как getEditors() возвращает список людей с разрешениями на редактирование.

Проблема:

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

Невозможно получить зрителей Google Sheet, так как это огромная проблема безопасности. Эта информация не сохраняется и, следовательно, не подлежит извлечению.

Обходной путь:

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

Код:

function onOpen(e) {
  var user = e.user.getEmail();
  // do some code to store or save this parameter
  // for example save it to a hidden sheet or email it to yourself
  // though an email would require an installable trigger to be made
}

Простые ограничения триггера:

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

Согласно документации по простым триггерам Google Apps Script:

  • Они не запускаются, если файл открывается в режиме «только чтение» (просмотр или комментирование).
  • Они не могут получить доступ к службам, требующим авторизации. Например, простой триггер не может отправить электронное письмо, поскольку службе Gmail требуется авторизация, но простой триггер может перевести фразу с помощью языковой службы, которая является анонимной.
  • Они могут изменять файл, к которому они привязаны,но не может получить доступ к другим файлам, потому что для этого потребуется авторизация.
  • Они могут или не могут определить личность текущего пользователя, в зависимости от сложного набора ограничений безопасности.

Последний пункт важен - получение информации о текущем пользователе возможно в зависимости от политик безопасности домена G Suite. Подробное объяснение этого можно найти в документации к методу getActiveUser():

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

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

Ссылки:

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