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 в качестве службы в настройках.

Другие вопросы по тегам