Ответ:
Невозможно получить список людей, которые открыли ваш файл на 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. Я надеюсь, что предоставленная мною информация будет вам полезна.
Ссылки: