Скрипт экспорта pdf из документа Google doc
Я новичок в скрипте Google и хочу создать скрипт в документе Google, связанном с контейнером, который преобразует документ Google в документ PDF с помощью параметра меню. Проблема в том, что если я изменю документ, он создаст тот же файл с тем же именем в моей папке, поэтому, если файл существует, я хочу перезаписать его (обновление функции), и, как вы видите, я пытался звонить разными версиями, и меня долго блокировали, думая о ^^. Если у вас есть такие же идеи, я буду очень счастлив! Большое спасибо.:)
function moveFile(sourceFileId, targetFolderId) {
var file = DriveApp.getFileById(sourceFileId);
file.getParents().next().removeFile(file);
DriveApp.getFolderById(targetFolderId).addFile(file);
}
//Fonction standard ----->>>>> function to create or overwrite a file: si ça depasse 10 MB on genère une exception
// Creates or replaces an existing file
function updateFile (folder, filename, data) {
try {
// filename is unique, so we can get first element of iterator
var file = folder.getFilesByName(filename).next()
file.setContent(data)
} catch(e) {
folder.createFile(filename, data)
}
}
function convert_to_pdf() {
// Get the document to which this script is bound.
var doc = DocumentApp.getActiveDocument();
var templateFile = DriveApp.getFileById(doc.getId());
var theBlob = templateFile.getBlob().getAs('application/pdf');
var newPDFFile = DriveApp.createFile(theBlob);
var fileName = templateFile.getName().replace(".", ""); //otherwise filename will be shortened after full stop
var name = newPDFFile.setName(fileName + ".pdf");
file = DriveApp.getFileById(doc.getId());
var parentFold = file.getParents();
var folder = parentFold.next();
var theId = folder.getId();
var targetFolder = DriveApp.getFolderById(theId);
Logger.log('targetFolder name: ' + targetFolder.getName());
if( checkFile_in_a_Folder(name,folder) != 1){
//on ajoute le fichier dans le repertoire courant targetFolder
moveFile(newPDFFile.getId(), theId) ;
Logger.log('Move File');
}
else{
// updateFile (folder, newPDFFile, newPDFFile.getAs(MimeType.PDF));// get string content getAs(MimeType.PDF)
Logger.log(' Update File ');
// updateFile (folder, newPDFFile, newPDFFile.getBlob().getAs('application/pdf'));// get string content getAs(MimeType.PDF)
Drive.Files.update({ title: newPDFFile.getName(), mimeType: newPDFFile.getMimeType()}, newPDFFile.getId(), theBlob);
}
//à la fin on ne va plus l'avoir dans RootFolder
var rootFolder = DriveApp.getRootFolder();
rootFolder.removeFile(newPDFFile);
/**============ Ancien appel de fonction ====================**/
// createPDFfile(doc.getId() , theId);
}
function checkFile_in_a_Folder(filename,foldername){
var results = 0; //on suppose qu'on ne le trouve pas
var folder = DriveApp.getFoldersByName(foldername);
Logger.log(folder.hasNext());
//Folder does not exist
if(!folder.hasNext()){
results = 0;
Logger.log("No Folder Found");
}
//Folder does exist
else{
Logger.log("Folder Found")
var file = folder.next().getFilesByName(filename);
if(!file.hasNext()){
Logger.log("No File Found");
results = 0;
}
else{
Logger.log("File Found");
results = 1;
}
}
return results;
}