0

我正在尝试创建一个脚本,该脚本将使用提交的 Google 表单来创建会议议程。我使用脚本“本周员工奖”作为首发,但我对编码的完全缺乏经验让我很难过。

我创建了一个 googde 文档议程模板,其中的关键占位符与我在 google 表单中要求的数据相匹配(因此是我的 google 电子表格中列的标题)。目标是当有人提交描述会议议程项目的表单时,此脚本会获取该数据并使用 google doc 议程模板为他们的会议创建议程。

这是我编辑的脚本:

// Global variables 
    var docTemplate = "1-4ELCpEGvrtnprnBYoLapwASK6TYmt3YpY0BkBKICrM";  
    var docName     = "Agenda";

function onFormSubmit(e) { // add an onsubmit trigger
// Meeting name and date values come from the spreadsheet form
   var meeting_name     = e.values[1];
   var date             = e.values[2];
// Get document template, copy it as a new temp doc, and save the Doc’s id
   var copyId = DocsList.getFileById(docTemplate)
            .makeCopy(docName+' for '+Meeting_Name)
            .getId();
// Open the temporary document
   var copyDoc = DocumentApp.openById(copyId);
// Get the document’s body section
   var copyBody = copyDoc.getActiveSection();
// Replace place holder keys,  
   copyBody.replaceText('keyMeeting_Name', Meeting_Name); 
   copyBody.replaceText('keyDate', Date);
   var Agenda_Item_1 = e.values[3]
   var Item_1_Time   = e.values[4] 
   var Agenda_Item_2 = e.values[5] 
   var Item_2_Time   = e.values[6] 
   var Agenda_Item_3 = e.values[7] 
   var Item_3_Time   = e.values[8] 
   copyBody.replaceText('keyAgenda_Item_1', Agenda_Item_1);
   copyBody.replaceText('keyItem_1_Time', Item_1_Time);
   copyBody.replaceText('keyAgenda_Item_2', Agenda_Item_2);
   copyBody.replaceText('keyItem_2_Time', Item_2_Time);
   copyBody.replaceText('keyAgenda_Item_3', Agenda_Item_3);
   copyBody.replaceText('keyItem_3_Time', Item_3_Time);
// Save and close the temporary document
   copyDoc.saveAndClose();
}

当我运行它时,我得到TypeError: Cannot read property "values" from undefined (line 7). 我假设该错误对于所有后续e.values行都是正确的。

4

1 回答 1

2

如果您手动运行此函数,则 e 将未定义。当有人提交表单时,您将需要安装触发器以运行 onFormSubmit()。相关说明在使用容器特定的可安装触发器”标题下。安装触发器后,脚本将在有人提交表单时运行,然后可以在分配给 e 的对象中找到“表单提交”事件的各个方面,如电子表格表单提交事件”表中所述。具体来说,e.values 将是一个数组,其中包含用户在表单中输入的值。

于 2013-04-29T06:21:41.880 回答