español - Cómo copiar una o más páginas existentes de un documento usando google apps script
google apps script tutorial español pdf (1)
He escrito con éxito una pequeña secuencia de comandos, que crea una carta en serie (carta física a varios destinatarios) basada en datos en una hoja de cálculo de Google que crea un documento nuevo para cada letra / dirección. Funciona, pero para correos grandes, este enfoque es un poco engorroso ya que se crean una gran cantidad de documentos y deben imprimirse individualmente.
Ahora me gustaría hacer lo mismo, pero como resultado tener todas las letras en un solo documento de Google.
¿Hay alguna forma de copiar el contenido de un documento existente e insertarlo varias veces en el mismo o en otros documentos (es decir, copiar / pegar a través del script de aplicaciones)?
Sus sugerencias serán muy apreciadas.
Gracias
Heinz
Después de su comentario, aquí está el código completo que uso para fusionar un número indeterminado de documentos en uno nuevo. Todas las identificaciones de documentos están en una matriz de ID como argumento para la función principal, los resultados son un nuevo documento con "varias páginas" adjuntas al nombre. Si necesita más explicaciones de las que proporcionan los comentarios del código, hágamelo saber ... (tenga en cuenta que solo funcionará para documentos que contengan texto y tablas, si tiene imágenes de otro tipo de datos, tendrá que manejar ese caso en el bucle principal donde verificamos el ElementType siguiendo la misma lógica)
EDITAR: primer código eliminado, después de su actualización Probé este enfoque suponiendo que tiene solo párrafos en su documento maestro ... pruébelo y supongo que podría comenzar desde allí para desarrollar su proyecto.
function Serialletter_Singledocument() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Datenbank");
var LastColumn = sheet.getLastColumn();
//here you need to get document id from url (Example, 1oWyVMa-8fzQ4leCrn2kIk70GT5O9pqsXsT88ZjYE_z8)
var FileTemplateFileId = "1Wrf2qvUTyc5tMmJIly40Z4U4sJb4-QhT5z-UfJmtQ-M" //Browser.inputBox("ID der Serienbriefvorlage (aus Dokumentenlink kopieren):");
var doc = DocumentApp.openById(FileTemplateFileId);
var DocName = doc.getName();
var headpara='' ***** '';
// Fetch entire table containing data
var data = sheet.getDataRange().getValues();
//Create copy of the template document and open it
var SerialLetterID = DocsList.getFileById(FileTemplateFileId).makeCopy(DocName +" Serienbrief").getId();
var docCopy = DocumentApp.openById(SerialLetterID);
var totalParagraphs = docCopy.getBody().getParagraphs() ;// get the total number of paragraphs elements
Logger.log(totalParagraphs);
var elements = [];
for ( var i = 1; i < data.length; i++) { //do for every record in the spreadsheet (containing the content to replace the variables in the letter)
for (var e=0;e<totalParagraphs.length;e++){
var element = totalParagraphs[e].copy();
// Logger.log(element.editAsText().getText())
for(var c=0;c<data[0].length;c++){
element.replaceText("<" +data[0][c] +">", data[i][c]); //replace variable (from column title) with actual value
}
elements.push(element);// store paragraphs in an array
}
for(var el=0;el<elements.length;el++){
var paragraph = elements[el].copy();
docCopy.getBody().appendParagraph(paragraph);
}
docCopy.getBody().appendPageBreak()
}
docCopy.saveAndClose();
Browser.msgBox("Serienbrief ist erstellt. Sie finden die erstellten Dokumente in Google Drive unter Meine Ablage");
}