Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 合并表单提交到文档-丢失的新手_Google Apps Script - Fatal编程技术网

Google apps script 合并表单提交到文档-丢失的新手

Google apps script 合并表单提交到文档-丢失的新手,google-apps-script,Google Apps Script,寻求以下方面的指导: 用户提交Formstack form->form entry在Google电子表格上填充一行->触发该提交的文档合并执行(现在是工作表中的一行),列标题定义变量->通过提交的电子邮件地址向用户发送电子邮件合并文档 我的文档需要能够有条件地处理许多变量(基于表单响应的if/then条件文本)。我玩过一个名为Ultradoc的应用程序,它似乎非常适合谷歌文档中的变量处理、支持条件等 但是,问题是它不知道如何选择一行数据,而是设计为对每列中的所有内容运行合并 一个想法可能是运行一

寻求以下方面的指导:

用户提交Formstack form->form entry在Google电子表格上填充一行->触发该提交的文档合并执行(现在是工作表中的一行),列标题定义变量->通过提交的电子邮件地址向用户发送电子邮件合并文档

我的文档需要能够有条件地处理许多变量(基于表单响应的if/then条件文本)。我玩过一个名为Ultradoc的应用程序,它似乎非常适合谷歌文档中的变量处理、支持条件等

但是,问题是它不知道如何选择一行数据,而是设计为对每列中的所有内容运行合并

一个想法可能是运行一个脚本,它接受新行,并以某种方式使它看起来像一个两行的工作表(标题+提交行)??不知何故隐藏了其他行?这似乎非常笨拙。这样做的正确方法是什么


提前感谢

您实际上不需要任何第三方应用程序。 将表单创建为Google表单,创建脚本并使其在表单提交时运行

要获取表单中输入的值,请将表单提交作为参数传递给函数:
function processForm(e){

要获取表单中的数据,请访问
e.values
数组。它的索引为零,从表单上的顶部项目开始

将提交的数据存储到变量中

var name = e.values[0];
var email = e.values[1];
// and so on...
执行任何验证或文档处理

创建模板文档的副本

var copyId   = DocsList.getFileById("templateDocID")
            .makeCopy(docName+' from '+name) //or whatever you wanted to call the resulting document
            .getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
替换模板中的文本

copyBody.replaceText("NAME", name);
copyBody.replaceText("EMAIL", email);
// and so on...
将文档发送给用户(对于我的应用程序,我以pdf格式发送,但您可以随时发送)

请发一些代码。
copyDoc.saveAndClose();
var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
MailApp.sendEmail(email, copyDoc.getName(), "Here's your document", {attachments:pdf});
DocsList.getFileById(copyId).setTrashed(true);