Проблема
Удаление дубликата файла и создание нового файла в целевой папке.
Решение
Чтобы развернутьв части 1 и комментариях вы можете использовать метод createFile()
в целевой папке, чтобы новый файл создавался непосредственно в нем, а не в корневом каталоге диска.Получившаяся модификация вашего скрипта должна выглядеть следующим образом:
В этом примере предполагается, что вы назвали расширенный сервис DriveAPI
при его активации.Также обратите внимание, что объявление folder
перемещено в область действия функции для правильного поведения (не объявляйте переменные в меньшем объеме [в вашем случае в выражении if...else
], если вы собираетесь использовать их в более широком):
//...get token and Blob (do not create the file);
var fileName = spreadsheet.getSheetByName("Gerais").getRange("H2").getValue();
//Access or create the 'Squads' folder;
var folder; //declare folder;
var folders = DriveApp.getFoldersByName("Squads"); //returns iterator;
if(folders.hasNext()) {
folder = folders.next();
}else {
folder = DriveApp.createFolder("Squads");
}
//Remove duplicate file with the same name;
var existing = folder.getFilesByName(fileName); //returns iterator;
if(existing.hasNext()) {
var duplicate = existing.next();
//use either Drive API or Advanced service solution here;
}
//add file;
folder.createFile(pdfBlob).setName(fileName);
Усовершенствованное сервисное решение Drive
DriveAPI.Files.remove(duplicate.getId());
Решение Drive API
var durl = 'https://www.googleapis.com/drive/v3/files/'+duplicate.getId();
var dres = UrlFetchApp.fetch(durl,{
method: 'delete',
muteHttpExceptions: true,
headers: {'Authorization': 'Bearer '+token}
});
if(dres.getResponseCode()>=400) {
//handle errors;
}
Ссылка
createFile()
из Blob ссылка [Folder
класс]; Drive
расширенный сервис ссылка ; Files
ресурс ссылка [Drive public API]; - Часть 1 (см. Обработку параметров);