2017-01-26 3 views
-1

В основном я делаю слияние почты (заменяя Total: $ {total_amount} на Total: $ 20.00) в документе Документов Google с помощью Google App Script.Получите копию тела, чтобы сделать окно предварительного просмотра

Однако, мне нужна опция preview, где я показываю модальный диалог или что-то в этом роде, а затем добавляю к нему копию Body фактического документа. Таким образом, я могу заменить все переменные и сохранить исходный формат (жирный, курсив и т. Д.).

У меня уже есть реализация, которая загружает текущий документ как экспортированный HTML и добавляет его в диалог.

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(){ ... 

Но при таком подходе я не могу показать страницы, так что пользователь знает, абзацы, который соответствует на каждой странице, расположение и т.д.

Есть ли способ, чтобы получить копию DocumentBody, чтобы сделать это, или подобный подход?

+1

Вы можете создать временный скопировать рабочий документ, изменить его по запросу пользователя. Вставьте измененный файл temp в диалоговое окно модели. Затем удалите временный документ, когда пользователь сделает выбор. Вложенный документ сохранит всю нумерацию страниц и макет. –

+0

@SpencerEaston вы можете привести пример в качестве ответа, пожалуйста? –

+0

@ChristopherFansisco какая часть? Копирование, изменение и удаление документа довольно прямолинейно. Нужна ли отладка, показывающая, как вставить документ в диалоговое окно? –

ответ

0

1) Создайте копию активного документа.
2) Внесите изменения в эту копию документа.
3) Вставьте измененный документ в диалоговое окно.
4) После того, как пользователь выполнил предварительный просмотр нового документа, удалите измененную копию.

Вы можете отобразить документ в диалоговом окне с использованием iframe. Диалоговые размеры, конечно, могут быть изменены из приведенного ниже примера. Важная часть - https://docs.google.com/document/d/{id}/preview?authuser=0. Я применил authuser=0, чтобы дать подсказку для использования учетных данных текущих пользователей. Это необязательно, но это может помешать появлению окна выбора аккаунта.

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>