触发单张表格的多个表格

时间:2015-03-18 19:15:51

标签: javascript google-apps-script google-sheets google-form

我有一个谷歌电子表格,可以从两种不同的表格中获取信息。

使用电子表格UI手动触发时,您无法区分在选择" OnFormSubmit"时指定了哪个表单。在触发器菜单中。

因此,我使用以下代码(对于我的工作表)来管理两个不同的表单提交的两个不同的触发事件:

function onOpen(e) {


var form = FormApp.openById('ID of Form 1');
 ScriptApp.newTrigger('onForm1Submit')
     .forForm(form)
     .onFormSubmit()
     .create();


var signup = FormApp.openById('[ID of Form 2]');
signup.setRequireLogin(true)
 ScriptApp.newTrigger('SignUpEvent')
     .forForm(signup)
     .onFormSubmit()
     .create();
}      
function SignUpEvent(e) {
\\stuff
}

function onForm1Submit(e) {
\\stuff
}

但是当我这样做的时候,我收到了表单提交上的失败通知:

功能:UpdateLadder

错误消息:"执行该操作需要授权。"

触发:" formSubmit"

首先,我如何收到这些电子邮件通知?我没有手动询问错误消息的电子邮件通知。 其次,对我来说,最好的方法是获得授权"?

2 个答案:

答案 0 :(得分:1)

对于onFormSubmit()功能,您可以编写代码以将目标表与特定功能相匹配。例如,我有一个电子表格,其中有两个表单,其中包含目标表单。在onFormSubmit()触发器代码中,这就是我所做的:

function onFormSubmit(e) {
  Logger.log("[METHOD] onFormSubmit");
  var sheet = e.range.getSheet();
  var sheetId = sheet.getSheetId();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var student = ss.getSheetByName("Student Requests");
  var studentId = student.getSheetId();
  var teacher = ss.getSheetByName("Teacher Requests");
  var teacherId = teacher.getSheetId();
  if (sheetId == studentId){
    sendStudentEmail(e.range);
  }
  if (sheetId == teacherId){
    sendTeacherEmail(e.range)
  } 
} 

因此,在此示例中,教师可以请求使用表单,如果onFormSubmit与教师表单相关,则发送教师电子邮件等。

答案 1 :(得分:0)

我有理由相信onFormSubmit将一个电子表格绑定到一个表单;它不知道如何处理两个onFormSubmit触发器。