Google Team Drive Перемещение файла между папками командного диска с помощью скрипта Apps
Я создаю рабочий процесс в Appmaker для Team Drive, где у меня есть 3 папки под командным диском:
БЫТЬ ОДОБРЕННЫМ
ОДОБРЕННЫЙ
REJECTED
Я отправляю документ из папки "УТВЕРЖДЕНО" на утверждение, если пользователь одобряет его, этот документ следует переместить в папку "УТВЕРЖДЕНО". Та же логика для ОТКАЗАНО.
Теперь мой вопрос: как я могу переместить документ между папками Team Drive? DriveApp.getFolderById(folderId).addFile()
не работает, так как я не могу иметь более одного родителя в Team Drive. DriveApp.getFolderById(folderId).createFile()
работает, но создает новый файл с новым идентификатором, который не соответствует моей цели процесса утверждения, поскольку это новый файл.
Есть ли способ переместить файл или скопировать / заменить любые операции, которые не изменят идентификатор моего файла? Я также пытался использовать REST API, но не смог их найти.
1 ответ
Хорошо, похоже, что я нашел ответ, через REST API я могу обновить родителей файла. Я сделал этот звонок, и он работает.
Вот образец.
var apiUrl = "https://www.googleapis.com/drive/v3/files/fileId?addParents=newFolderId&removeParents=oldFolderId&supportsTeamDrives=true";
var token = ScriptApp.getOAuthToken();
var header = {"Authorization":"Bearer " + token};
var options = {
"method":"PATCH",
"headers": header
};
var res = UrlFetchApp.fetch(apiUrl, options);
ОБНОВЛЕНИЕ С помощью API Advance Services мы можем достичь того же, вот ответ, который я получил от Алексея Иванейчика
function moveFileToFolder(fileId, newFolderId) {
var file = Drive.Files.get(fileId, {supportsTeamDrives: true});
Drive.Files.patch(file, fileId, {
removeParents: file.parents.map(function(f) { return f.id; }),
addParents: [newFolderId],
supportsTeamDrives: true
});
}
Здесь вам нужно включить расширенные сервисы Drive SDK, если вы используете Appscript. В случае Appmaker Добавить Drive SDK в качестве службы в настройках.