Домен SuperAdmin, использующий AppScript, получает ошибку: вызов API для drive.teamdrives.insert завершился ошибкой: недостаточно прав для этого файла - PullRequest
2 голосов
/ 02 ноября 2019

Я работаю над скриптом Google App, который должен создать новые Google TeamDrives. Я являюсь суперадмином в своем домене, и когда я пытаюсь выполнить код (написанный в соответствии с предложением завершения кода App Script), я получаю сообщение об ошибке:

Не удалось вызвать API-интерфейс для drive.teamdrives.insertс ошибкой: Недостаточно прав для этого файла (строка 288, файл «Код»)

У меня возникли проблемы с поиском документации, которая строго относится к App Script, поэтому я пытаюсь адаптировать APIнайденный здесь метод: https://developers.google.com/drive/api/v3/reference/drives/create

Очевидно, что вместо прямого http-вызова я использую API-интерфейс скрипта приложения, как показано в приведенном ниже коде. Кроме того, я заметил, что API v3 использует метод create, а не insert, используемый в v2. Сценарии приложения все еще используют метод вставки. Замена вставки результатами создания приводит к сообщению об ошибке, указывающем, что основной версией API является 2:

TypeError: Не удается найти функцию create в объекте AdvancedServiceIdentifier {name = drive, version = v2}.

Метод вставки в v2 очень похож на метод создания в v3: https://developers.google.com/drive/api/v2/reference/drives/insert

У меня была похожая ошибка при попытке получить разрешения на существующих дисках, и было принято решение передать "SupportAllDrives = true"Аргумент с запросом (с использованием необязательного параметра arguments вызова API). К сожалению, метод «insert» не имеет параметра, который я мог бы использовать для передачи необязательных аргументов - представление ресурса и идентификатор запроса являются единственными параметрами метода «insert».

Мой код:

function createSharedDrive() {
  var resource = {
    name: "TestDriveChrisD6"
  };
  var drive = Drive.Teamdrives.insert(resource, "testRequestId_TestDriveChrisD6");
  Logger.log(JSON.stringify(drive)); // to see the result if it works eventually
}

Я надеялся, что этот вызов API приведет к ответу, содержащему представление диска, вместо этого я получаю сообщение об ошибке:

Вызов API для drive.teamdrives.insert завершился ошибкой:Недостаточно прав для этого файла (строка 288, файл «Код»)

Номер строки в сообщении об ошибке - просто номер строки моего исходного кода, который содержит код:

var drive = Drive.Teamdrives.insert(resource, "testRequestId_TestDriveChrisD6");

Что я делаю неправильно? Стоит ли вызывать метод http прямым запросом?

1 Ответ

0 голосов
/ 04 ноября 2019

Моя проблема была решена следующим образом:

  1. Переход к консоли администратора -> Приложения -> G Suite -> Диск и документы -> Настройки общего доступа
  2. В моем домене по адресув разделе «Создание общего диска» параметр «Запретить пользователям вот создания новых общих дисков "включен в глобальных настройках домена и выключен (переопределен) для организационной единицы администраторов. Оказывается, мой пользователь был в группе администраторов, но не в организационной единице администраторов. Перемещение моего пользователя в подразделение администратора исправленопроблема.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...