У меня есть код, который объединяет несколько Документов Google в один файл, и код для сохранения документа в формате PDF:
function createPDF(docId) {
var docFile = DriveApp.getFileById(docId);
var blob = docFile.getAs('application/pdf');
var file = DriveApp.createFile(blob);
file.setName('test.pdf');
}
function mergeDocuments(doc, docIDs){
var body = doc.getActiveSection();
for (var i = 0; i < docIDs.length; ++i ) {
var otherBody = DocumentApp.openById(docIDs[i]).getActiveSection();
var totalElements = otherBody.getNumChildren();
for( var j = 0; j < totalElements; ++j ) {
var element = otherBody.getChild(j).copy();
var type = element.getType();
if( type == DocumentApp.ElementType.PARAGRAPH )
body.appendParagraph(element);
else if( type == DocumentApp.ElementType.TABLE )
body.appendTable(element);
else if( type == DocumentApp.ElementType.LIST_ITEM )
body.appendListItem(element);
else
throw new Error("Unknown element type: "+type);
}
}
}
Функция mergeDocument()
прекрасно работает для объединения документов, а функция createPDF()
также отлично работает - если я использую их по одному. Если я объединю их в один вызов, то экспортированный PDF-файл всегда будет пустым.
function mergeAndCreatePDF() {
var doc = DocumentApp.create('test.doc');
var docIDs = ['docid0', 'docid1'];
mergeDocuments(doc, docIDs);
Logger.log(doc.getId())
var docFile = DriveApp.getFileById('' + doc.getId());
var blob = docFile.getAs('application/pdf');
var file = DriveApp.createFile(blob);
file.setName('test.pdf');
}
Как объединить два метода, чтобы их можно было использовать в одной банке для скрипта приложений (вместо того, чтобы запускать один, а затем запускать другой)?