2017-01-26 1 views
-1

que je fais essentiellement un publipostage (remplacement Total: $ {total_amount} pour Total: $ 20.00) dans un document Google Docs avec Google App Script.Obtenir une copie du corps pour faire une fenêtre « aperçu »

Cependant, je veux une option preview, où je montre une boîte de dialogue modale ou quelque chose, et puis j'y ajoute une copie du Body du document réel. De cette façon, je peux remplacer toutes les variables et conserver le format d'origine (gras, italique, etc.).

J'ai déjà une implémentation qui charge le document en cours en HTML exporté et l'ajoute à la boîte de dialogue.

html = getGoogleDocumentAsHTML(); 
replaced = replace(html); 

output = HtmlService.createHtmlOutput(replaced) 
    .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
    .setWidth(700) 
    .setHeight(500); 

DocumentApp.getUi().showModalDialog(output, 'Preview'); 

/* 
* @see http://stackoverflow.com/questions/14663852/get-google-document-as-html#answer-28503601 
*/ 
function getGoogleDocumentAsHTML(){ ... 

Mais avec cette approche, je ne peux pas montrer les pages, de sorte que l'utilisateur connaît les paragraphes qui s'intègre sur chaque page, mise en page, etc.

Est-il possible d'obtenir une copie de la DocumentBody pour ce faire, ou une approche similaire?

+1

Vous pouvez créer temp copier le doc de travail, modifier comme demandé par l'utilisateur. Intégrez le document temporaire modifié lui-même dans une boîte de dialogue de modèle. Ensuite, supprimez le document temporaire lorsque l'utilisateur fait le choix. Le document incorporé conservera tous les numéros de page et la mise en page. –

+0

@SpencerEaston pouvez-vous donner un exemple en guise de réponse, s'il vous plaît? –

+0

@ChristopherFansisco quelle partie? La copie, la modification et la suppression d'un document sont assez simples. Avez-vous besoin d'une démonstration montrant comment intégrer le document dans une boîte de dialogue? –

Répondre

0

1) Créer une copie du document actif.
2) Apportez des modifications à cette copie du document.
3) Intégrez le document modifié dans une boîte de dialogue.
4) Une fois que l'utilisateur a fini de prévisualiser le nouveau document, supprimez la copie modifiée.

Vous pouvez afficher un document dans une boîte de dialogue en utilisant une iframe. Les tailles de dialogue peuvent bien sûr être modifiées à partir de l'exemple ci-dessous. La partie importante est https://docs.google.com/document/d/{id}/preview?authuser=0. J'ai cloué sur le authuser=0 pour donner l'indice d'utiliser les informations d'identification des utilisateurs actuels. Ce n'est pas nécessaire, mais cela peut empêcher la boîte de sélection du compte d'apparaître.

code.gs

function renderDocument(docId){  
    var html = HtmlService.createTemplateFromFile('dialog'); 
    html.ID = id 
    var ui = DocumentApp.getUi(); 
    ui.showModalDialog(html.evaluate().setWidth(800).setHeight(910), "html") 
} 

dialog.html

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <iframe frameborder="0" style="width:90%;height:900px" allowfullscreen="" src="https://docs.google.com/document/d/<?=ID?>/preview?authuser=0"></iframe> 
    </body> 
</html>