Ich habe ein Apps-Skript, das den Inhalt einer Vorlagedatei an das Ende eines Dokuments kopiert. Es funktioniert mit einem kleinen Ärgernis: Die nummerierte Liste wird von einer Kopie zur nächsten fortgesetzt.Nummerierte Listen werden fortgesetzt, wenn das Apps-Skript den Vorlageninhalt an das Dokument anfügt
Ich habe viele verschiedene Vorlagen, die Benutzer an das Ende des Dokuments anhängen können. Jede Vorlage ist in einem eigenen Dokument gespeichert.
function addSub(template_id){
var mainBody = DocumentApp.getActiveDocument().getBody();
var tempBody = DocumentApp.openById(template_id).getBody();
for(var i = 0;i<tempBody .getNumChildren();i++){
var element = tempBody .getChild(i);
if(element.getType() == DocumentApp.ElementType.TABLE)
mainBody.appendTable(element.copy());
else if(element.getType() == DocumentApp.ElementType.PARAGRAPH)
mainBody.appendParagraph(element.copy());
else if(element.getType() == DocumentApp.ElementType.LIST_ITEM)
mainBody.appendListItem(element.copy());
else if(element.getType() == DocumentApp.ElementType.PAGE_BREAK)
mainBody.appendPageBreak(element.copy());
}
}
Es könnte wie folgt aussehen: (Ich möchte die Liste für jede neue Kopie der Vorlage zurücksetzen)
Tabelle dieser Vorlage mit dem Namen
einige Rohtext
- Liste item1
- Liste item2
Tabelle mit dem Namen dieser Vorlage
einige Rohtext
- Liste item1
- Liste item2
Hat mich ein bisschen verstanden, was dieser Code macht: Jedes Mal, wenn der Code eine neue listId sieht, erstellt er ein neues, temporäres listItem im Zieldokument, um eine neue listId für dieses Dokument zu erhalten (das temporäre listItem wird gespeichert, so dass die ID nicht existiert) wird nicht wiederverwendet) und weist dem kopierten Element die neue listId zu. Das Wörterbuch speichert alle listIds der kopierten Elemente in den erstellten temporären Elementen und ermöglicht die Zuordnung von listIds von Elementen, die in dasselbe temporäre Element kopiert wurden. Der Code am Ende räumt dann alle temporären listItems auf. – Von