Google App Script技术需求:表单提交后按客户名创建文件夹及文档
表单提交自动创建客户文件夹并生成文档的Google Apps Script解决方案
需求说明
- 表单提交后,根据提交的客户姓名(如Jane Doe)创建同名文件夹
- 基于预设的文档模板,生成包含表单信息的文档,并将其放入刚创建的客户文件夹中
代码修正说明
当前代码存在两个核心问题:
- 创建的文件夹名称固定为"My New Folder Name",未使用表单提交的客户姓名
- 生成的文档仍放入固定的旧文件夹,而非新创建的客户文件夹
以下是修正后的完整代码:
function AutoFillGoogleDocFromForm(e) { // 提取表单提交的各项数据 var timestamp = e.values[0]; var firstname = e.values[1]; var lastname = e.values[2]; var typeofa = e.values[3]; var role = e.values[4]; var organization = e.values[5]; var date = e.values[6]; var honorific = e.values[7]; var pronouns1 = e.values[8]; var pronouns2 = e.values[9]; var intro = e.values[10]; var intrv = e.values[11]; var typeup = e.values[12]; var test1 = e.values[13]; var test1r = e.values[14]; var test2 = e.values[15]; var test2r = e.values[16]; var test3 = e.values[17]; var test3r = e.values[18]; var test4 = e.values[19]; var test4r = e.values[20]; var test5 = e.values[21]; var test5r = e.values[22]; var test6 = e.values[23]; var test6r = e.values[24]; var test7 = e.values[25]; var test7r = e.values[26]; var test8 = e.values[27]; var test8r = e.values[28]; var test9 = e.values[29]; var test9r = e.values[30]; // 获取父文件夹(存放所有客户文件夹的根文件夹) var parentFolder = DriveApp.getFolderById("1k2rUCXQaVLaKeBUsoOUjxR_Ha29u8c_K"); // 用客户姓名创建新文件夹 var newFolder = parentFolder.createFolder(firstname + " " + lastname); // 获取文档模板 var templatefile = DriveApp.getFileById("1Y8OVDSlUPva6iGygjttBCsQqhaSQYwplrPhPP_-BJ44"); // 复制模板到新创建的客户文件夹,并用表单信息命名文档 var copy = templatefile.makeCopy(organization + '-' + lastname + ', ' + firstname + '-' + role + '-' + date, newFolder); // 打开复制后的文档以进行编辑 var doc = DocumentApp.openById(copy.getId()); var body = doc.getBody(); // 替换文档中的所有占位符 body.replaceText("{{TypeUp}}", typeup); body.replaceText("{{Intro}}", intro); body.replaceText("{{Intrv}}", intrv); body.replaceText("{{Test1}}", test1); body.replaceText("{{Test1r}}", test1r); body.replaceText("{{Test2}}", test2); body.replaceText("{{Test2r}}", test2r); body.replaceText("{{Test3}}", test3); body.replaceText("{{Test3r}}", test3r); body.replaceText("{{Test4}}", test4); body.replaceText("{{Test4r}}", test4r); body.replaceText("{{Test5}}", test5); body.replaceText("{{Test5r}}", test5r); body.replaceText("{{Test6}}", test6); body.replaceText("{{Test6r}}", test6r); body.replaceText("{{Test7}}", test7); body.replaceText("{{Test7r}}", test7r); body.replaceText("{{Test8}}", test8); body.replaceText("{{Test8r}}", test8r); body.replaceText("{{FirstName}}", firstname); body.replaceText("{{LastName}}", lastname); body.replaceText("{{TypeofA}}", typeofa); body.replaceText("{{Role}}", role); body.replaceText("{{Organization}}", organization); body.replaceText("{{Date}}", date); body.replaceText("{{Honorific}}", honorific); body.replaceText("{{pronoun1}}", pronouns1); body.replaceText("{{pronoun2}}", pronouns2); // 保存并关闭文档 doc.saveAndClose(); }
关键代码解释
针对你提出的两行代码,解释如下:
var templateResponneFolder = DriveApp.getFolderById("...")
这行代码的作用是通过Drive文件夹的唯一ID,获取一个已存在的文件夹对象。在你原来的代码中,复制的文档会被放到这个固定文件夹里,现在我们已经替换成新创建的客户文件夹,所以这行可以删除。var doc = DocumentApp.openById(copy.getId());
这行代码会通过复制后的文档ID,打开对应的Google文档对象。只有打开文档后,才能对文档内容进行编辑(比如替换模板中的占位符),编辑完成后需要调用doc.saveAndClose()来保存修改并关闭文档。
内容的提问来源于stack exchange,提问作者Reed Schroeder
相关产品推荐
相关产品推荐

