Общий диск Google Перемещайте файлы между папками общего диска с помощью скрипта приложений.

Я создаю рабочий процесс в Appmaker для общего диска, где у меня есть 3 папки на общем диске:
БУДЕТ УТВЕРЖДЕНО
УТВЕРЖДЕНО
ОТКЛОНЕНО

Я отправляю документ из папки TO BE APPROVED на утверждение, если пользователь одобряет его, этот документ должен переместиться в папку APPROVED. Та же логика для ОТКЛОНЕННЫХ.

Теперь у меня вопрос, как переместить документ между папками общего диска. DriveApp.getFolderById(folderId).addFile() не работает, поскольку на общем диске не может быть более одного родителя. DriveApp.getFolderById(folderId).createFile() работает, но он создает совершенно новый файл с новым идентификатором, который не соответствует моей цели рабочего процесса утверждения, поскольку это совершенно новый файл.

Есть ли способ переместить файл или скопировать / заменить какие-либо операции, которые не изменят идентификатор моего файла? Я также пробовал использовать REST API, но не нашел.


person Darpan Sanghavi    schedule 05.04.2018    source источник
comment
Вы должны использовать Drive REST API для непосредственного управления списком родителей. Это расширенная служба, которую необходимо включить перед использованием.   -  person tehhowch    schedule 05.04.2018
comment
Да @tehhowch, ответ обновил. Я сделал это только с помощью REST.   -  person Darpan Sanghavi    schedule 05.04.2018


Ответы (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);

ОБНОВЛЕНИЕ Используя Advance Services API, мы можем добиться того же. Вот ответ, который я получил от Алексея Иванейчика.

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 как услугу в настройках.

person Darpan Sanghavi    schedule 05.04.2018
comment
Конечно!! Цените поддержку. - person Darpan Sanghavi; 05.04.2018
comment
Если кто-то еще найдет применение этому ответу, supportsTeamDrives устарел и был заменен на supportsAllDrives. Кроме того, поддержка supportsAllDrives также будет прекращена в июне 2020 года, и с этого момента групповые диски будут автоматически поддерживаться. - person Markus Malessa; 06.09.2019