1

寻求以下方面的指导:

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

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

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

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

提前致谢

4

1 回答 1

2

您实际上不需要任何第三方应用程序。将表单创建为 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);
于 2012-11-19T20:22:59.490 回答