GDrive Disable Копирование и загрузка - PullRequest
0 голосов
/ 13 февраля 2020

Как мне управлять функцией совместного использования: «Отключить копирование и загрузку» без расширенной службы накопителей?

В настоящее время я решаю эту проблему:

function mySolveAboutAdvancedService(id) {
  var file = Drive.Files.get(id);
  file.labels.restricted = true;
  Drive.Files.update(file, id);
}

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

Спасибо

1 Ответ

0 голосов
/ 13 февраля 2020
  • Вы хотите выполнить следующий скрипт без использования расширенных сервисов Google.

    var file = Drive.Files.get(id);
    file.labels.restricted = true;
    Drive.Files.update(file, id);
    
  • Вы хотите узнать причину, по которой «Отключить копирование и загрузку» не может быть достигнуто без использования вышеуказанного сценария.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и обходное решение:

В Drive API расширенных служб Google используется Drive API v2. В этом случае labels.restricted предназначено для Drive API v2, а также в официальном документе говорится следующее.

labels.restricted: Предупреждение. Этот элемент устарел. Устаревший - используйте copyRequiresWriterPermission вместо.

При этом, когда {labels: {restricted: true}} используется для Drive API v3, его нельзя использовать, пока не возникает ошибка. Но когда Drive API v2 используется с UrlFetchApp, {labels: {restricted: true}} все еще можно использовать. Таким образом, ваш сценарий, использующий Drive API службы Advanced Google, работает.

Чтобы выполнить сценарий без использования служб Advanced Google, напрямую запросите конечную точку Drive API v3 (в данном случае используется версия v3). .) с телом запроса {copyRequiresWriterPermission: true} с использованием UrlFetchApp. Пример сценария выглядит следующим образом.

Пример сценария:

function mySolveAboutAdvancedService() {
  var id = "###";  // Please set the file ID.

  var url = "https://www.googleapis.com/drive/v3/files/" + id;
  var params = {
    method: "patch",
    contentType: "application/json",
    payload: JSON.stringify({copyRequiresWriterPermission: true}),
    headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
  };
  var res = UrlFetchApp.fetch(url, params);
  Logger.log(res.getContentText())
}

Примечание:

  • Если вы хотите использовать Drive API v2 с UrlFetchApp, как насчет следующего сценария? В Drive API v2 можно использовать {labels: {restricted: true}} и {copyRequiresWriterPermission: true}.

    function mySolveAboutAdvancedService() {
      var id = "###";  // Please set the file ID.
    
      var url = "https://www.googleapis.com/drive/v2/files/" + id;
      var params = {
        method: "put",
        contentType: "application/json",
        payload: JSON.stringify({copyRequiresWriterPermission: true}),  // or payload: JSON.stringify({labels: {restricted: true}})
        headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}
      };
      var res = UrlFetchApp.fetch(url, params);
      Logger.log(res.getContentText())
    }
    

Ссылки:

Если Я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

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