Настройка разрешения для файлов командного диска через скрипт - PullRequest
1 голос
/ 19 июня 2019

Я пишу простой сценарий приложения, чтобы настроить права доступа к файлам, расположенным в корпоративном командном драйвере. Файлы и пользователи, которые должны быть включены, записываются в документ листов Google. Сценарий считывает каждую строку для имени файла и пользователя (идентифицируется по его / ее электронной почте) и устанавливает разрешение «просмотра». Базовый сценарий работает нормально, но имеет раздражающую функцию для отправки электронной почты каждому пользователю, для которого он устанавливает разрешение. Вот рабочий код:

    function simpleSetFilePermission_v1(filename, user_email){
      var files = DriveApp.getFilesByName(filename);

        while (files.hasNext()) {
          var file = files.next();
          if (file) {
            file.addViewer(user);
            return file;
          }
        }
    }

В поисках решения, позволяющего избежать почтовых уведомлений. Я сталкиваюсь с различными сообщениями, в которых предлагается включить расширенные функции и получить доступ к файлам в TeamDrive с помощью Advanced Google Services ( сообщение о переполнении стека ). Проблема в том, что APIS с gsuite скрипта приложений не работает.

    function simpleSetFilePermission_v2(filename, user_email){
      var files = DriveApp.getFilesByName(filename);

        while (files.hasNext()) {
          var file = files.next();
          if (file) {

            var _f_id = file.getId();

            Drive.Permissions.insert(
            {
              'role': 'reader',
              'type':'user',
              'value': user_email
            },
            _f_id,
            {
                'sendNotificationEmails': 'false'
            });
            return file;
          }
        }
    }

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

Есть ли какое-либо разрешение, которое должно быть установлено администратором (конечно, я включил расширенные службы)? Есть ли какие-то ограничения на использование API вместе со скриптами приложения Google? Заранее спасибо

Guido

1 Ответ

1 голос
/ 26 июня 2019

Прежде всего, вы получаете сообщение об ошибке «файл не найден», поскольку вы выводите файл без логического значения « includeItemsFromAllDrives ».Это необходимо до 2020 года, когда оно станет свойством по умолчанию для команды list.В противном случае он не будет пытаться найти файл в Team Drives.

Во-вторых, вам нужно добавить логическое значение " supportsAllDrives " в вызове разрешений insert.Это будет свойство по умолчанию и в 2020 году.

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

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