【问题标题】:Trouble defining e.values for OnFormSubmit Trigger for Google Forms [duplicate]为 Google 表单的 OnFormSubmit 触发器定义 e.values 时遇到问题 [重复]
【发布时间】:2012-11-21 07:57:12
【问题描述】:

我正在尝试创建一个脚本,该脚本将使用提交的 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 行都是正确的。

【问题讨论】:

标签: google-apps-script


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2021-03-17
    相关资源
    最近更新 更多