2016-08-22 3 views
0

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

Невозможно ли это посредством форм и скрипта, связанного с контейнером?

Благодаря

ответ

0

Я первоначально получил эту работу вместо нескольких строк в моем документе шаблон, но теперь по какой-то причине ничего не работает. Я редактировал текст в шаблоне в какой-то момент, поэтому не уверен, что это изменит идентификатор файла. Он создает копию, но 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(); 

} 
` 
+0

Сценарий выполнения: Выполнение не выполнено: TypeError: Не удается вызвать метод «getItemResponses» из не определено. (строка 10, файл «Код») – Rockn

+0

Удаленный триггер и добавлен снова, и процесс работает должным образом. – Rockn

0

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

+0

Если я могу узнать, как читать содержимое формы в массив, остальное будет торт. – Rockn

+0

@ Rocknyou найдет, что здесь: https://developers.google.com/apps-script/guides/triggers/events#form-submit – Harold