多个表单触发到单个工作表



我有一个谷歌电子表格,它从两种不同的形式获取信息。

使用电子表格 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
}

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

功能:更新梯子

错误消息:"需要授权才能执行此操作。

触发器:"表单提交"

首先,我如何开始接收这些电子邮件通知?我没有手动要求发送错误消息的电子邮件通知。其次,我获得"授权"的最佳方式是什么?

对于onFormSubmit()函数,您可以编写代码以将目标工作表与某个函数匹配。 例如,我有一个电子表格,其中包含 2 个表单,其中都有目标工作表。 在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与教师表单相关,则向教师发送电子邮件等。

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

相关内容

最新更新