Вопрос:

Прямое обновление шаблона документа из формы

google-apps-script

71 просмотра

2 ответа

17 Репутация автора

Можно ли отправить форму и обновить шаблон документа из содержимого формы? Единственный способ сделать что-то похожее - отправить форму в электронную таблицу, а функция onFormsubmit в электронной таблице обновить шаблон.

Разве это невозможно через формы и скрипт, связанный с контейнером?

Спасибо

Автор: Rockn Источник Размещён: 22.08.2016 09:21

Ответы (2)


0 плюса

2915 Репутация автора

да, это возможно, но это нелегко (по сути, используя doc в качестве шаблона, для этого нет очевидных инструментов)

Автор: Harold Размещён: 22.08.2016 10:18

0 плюса

17 Репутация автора

Решение

Сначала я заставил это работать, заменив несколько строк в шаблоне моего документа, но теперь по какой-то причине ничего не работает. Я однажды отредактировал текст в шаблоне, поэтому я не уверен, что это изменит идентификатор файла. Это создает копию, но replaceText не работает. Код прилагается:

`function onFormSubmit(e) {

   var dt = Utilities.formatDate(new Date(), 'GMT', "MM/dd/yyyy")
   var submitter = Session.getActiveUser().getEmail();
   var copyDoc = DriveApp.getFileById('1t5r8IxLgunJ17J2tXkHfw3LRfuXQeTlP5MZURC-23e0').makeCopy('tmpAddress').getId();
   var newDoc = DocumentApp.openById(copyDoc);
   var body = newDoc.getBody();

   var itemResponse = e.response;
   var name = itemResponse.getItemResponses()[0].getResponse();
   var email = itemResponse.getItemResponses()[1].getResponse();
   var pphone = itemResponse.getItemResponses()[2].getResponse();
   var paddress = itemResponse.getItemResponses()[3].getResponse();
   var palot = itemResponse.getItemResponses()[4].getResponse();
   var pcity = itemResponse.getItemResponses()[5].getResponse();
   var pstate = itemResponse.getItemResponses()[6].getResponse();
   var pzip = itemResponse.getItemResponses()[7].getResponse();
   var nphone = itemResponse.getItemResponses()[8].getResponse();
   var naddress = itemResponse.getItemResponses()[9].getResponse();
   var nalot = itemResponse.getItemResponses()[10].getResponse();
   var ncity = itemResponse.getItemResponses()[11].getResponse();
   var nstate = itemResponse.getItemResponses()[12].getResponse();
   var nzip = itemResponse.getItemResponses()[13].getResponse();

   body.replaceText('#{name}', name);
   body.replaceText('#{email}', email);
   body.replaceText('#{pphone}', pphone);
   body.replaceText('#{paddress}', paddress);
   body.replaceText('#{palot}', palot);
   body.replaceText('#{pcity}', pcity);
   body.replaceText('#{pstate}', pstate);
   body.replaceText('#{pzip}', pzip);
   body.replaceText('#{nphone}', nphone);
   body.replaceText('#{naddress}', naddress);
   body.replaceText('#{nalot}', nalot);
   body.replaceText('#{ncity}', ncity);
   body.replaceText('#{nstate}', nstate);
   body.replaceText('#{nzip}', nzip);
   body.replaceText('#{dt}', dt)
   body.replaceText('#{submitter}',submitter)
   newDoc.saveAndClose();

 }
`
Автор: Rockn Размещён: 23.08.2016 03:32
Вопросы из категории :
32x32