Вы хотите выполнить следующий скрипт без использования расширенных сервисов 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())
}
Ссылки:
Если Я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.