Автоматическое копирование данных из Google таблиц в шаблон Google docs

#google-apps-script #google-sheets #google-docs

Вопрос:

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

Может ли кто-нибудь поделиться этими знаниями, пожалуйста?

Комментарии:

1. Это вполне возможно. Пожалуйста, предоставьте более подробную информацию о вашем шаблоне.

2. Шаблон предназначен для цитаты. Я пытаюсь скопировать имя, фамилию, адрес, номер телефона и адрес электронной почты. Я также пытаюсь заставить листы генерировать справочный номер, но я не могу заставить его работать, когда данные заполняются на листе из формы отправки.

3. Ну, похоже, у вас уже есть ответ, пожалуйста, поработайте с волонтером, чтобы решить любые дальнейшие вопросы.

Ответ №1:

То, что вы ищете, — это «Автоматическое заполнение документа Google из формы». Вам нужно будет добавить функцию на свой лист с триггером onFormSubmit. В этой функции вы будете

  • ссылка на ваш шаблон
  • создайте новый документ по этому шаблону
  • сгенерируйте справочный номер
  • обновите новый документ информацией

Это будет выглядеть примерно так:

 function autoFillGoogleDocFromForm(e) {
     // Get your values from form
     let timestamp = e.values[0];
     let value1 = e.values[1];
     let value2 = e.values[2];
     // ... continue for however many values you are returning

     // Get your template file
     let templateFile = DriveApp.getFileById('your_file_id_here');

     // Set the folder you want to create the new file in
     let responseFolder = DriveApp.getFolderById('your_folder_id_for_new_doc'); 

     // Create your reference number
     let refNumber = createReferenceNumber();  // You'll need to write this

     // Create your new file
     let newDocName = createNewDocFileName();  // You'll need to write this
     let copy = file.makeCopy(newDocName , responseFolder); 
     
     // Open the newly created document so it can be updated
     let doc = DocumentApp.openById(copy.getId()); 

     // Update the doc with your new data
     let body = doc.getBody();

     // The template should have placeholders {{ }} to replace the value with
     body.replaceText('{{value1}}', value1); 
     body.replaceText('{{value2}}', value2);  
     body.replaceText('{{Reference Number}}', refNumber); 

     doc.saveAndClose();  
}
 

Конечно, вам нужно будет написать сценарий для создания ссылочного номера и сценарий для генерации имени файла. (Или просто добавьте их в строку, они не обязательно должны быть отдельными сценариями.) В вашем вопросе упоминалось, что у вас возникли проблемы с созданием справочного номера. Я рекомендую создать новый вопрос с кодом, который вы пробовали, и любыми ошибками, которые вы получаете.