Google函数中的OnEdit()Google脚本触发器使用

时间:2018-08-10 15:39:20

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

我正在使用Google电子表格/ Google表单使用Google Apps脚本开发一个小项目。

我想通过将班级输入Google表单来帮助大班级的学生找到学习的人。从那里,他们会自动收到一封电子邮件,其中列出了与他们同班的人,他们也在寻找同班或讲课的人。学生输入他们的姓名,学校编号,电子邮件,班级CRN#,班级名称和讲师。它放在Google电子表格中,我像CSV文件一样操作它。

我想使用onEdit()触发器,以便在添加或编辑信息时将发送一封电子邮件。我不了解onEdit()事件触发器的工作原理。

这是我用于类排序的代码:

function studyBudy2() {
    var ss = 
    SpreadsheetApp.openById("1ZxTdRdhy0iR6HH7jB75KL4g-SCr7nPZEilXrzECe7yg").getActiveSheet();
    var numOfStu = ss.getLastRow();

    /*var range = ss.getRange(2, 4, numOfStu-1);
    var values = range.getValues();

    // get emails out of spreadsheet
    for (var row in values) {
        for (var col in values[row]) {
            emails = values[row][col]
            Logger.log(emails);
            // sends emails
            MailApp.sendEmail(emails, "pls work","now");
        }
     }
     */
     var theMass = []
     var rAnge = ss.getRange(2,1,numOfStu-1,7);
     var vAlues = rAnge.getValues()
     for (var row in vAlues) {
         var student = [];
         var buzznumber = vAlues[row][2];
         var classCRN = vAlues[row][4];
         var class = vAlues[row][5];
         var proffessor = vAlues[row][6];
         student.push(buzznumber);
         student.push(classCRN);
         student.push(class);
         student.push(proffessor);
         theMass.push(student);
     }

     for (var i = 0; i < numOfStu-2; i++){
         var theStudent = theMass[i]
         var theCRN = theStudent[1];
         var theClass = theStudent[2];
         var theProffessor = theStudent[3];
         var theBuzznumber = theStudent[0];
         Logger.log(theClass);
         for (var j= 1; j < numOfStu-1; j++){
             if (i+j <= numOfStu-2 && theMass[i+j][1] == theCRN && (i+j != i)){
                 Logger.log("Youre in the same Section!")
             } 
             else if (i+j <= numOfStu-2 && theMass[j+i][2] == theClass && theProffessor != theMass[j+i][3] && (i+j != i)){
                 Logger.log("Youre taking the same Course!");
             }
             else if(j+i <= numOfStu-2 && theClass == theMass[j+i][2] && theProffessor == theMass[j+i][3] && (i+j != i)){
                 Logger.log("Youre in the same lecture!");                              
             }     
             else if (j+i > numOfStu-2){
                 continue;
             }
         }

     } 
}

我想将onEdit()函数实现为另一个函数,但是它是在另一个函数中还是在此studyBudy2函数中呢?

function onEdit(e) {
    var activeSheet = SpreadsheetApp.openById("1ZxTdRdhy0iR6HH7jB75KL4g-SCr7nPZEilXrzECe7yg").getActiveSheet();
    var row = e.range.getRow();
    var studentNum = row+1;
}

1 个答案:

答案 0 :(得分:0)

onEdit是保留的函数名称,目的是声明要用作简单触发器的函数。

function onEdit(e){
  //do something
}

除了创建onEdit简单触发器外,我们还可以创建可编辑的可安装触发器。可以根据需要命名用于可安装触发器的函数,但为避免混淆,最好避免使用保留的函数名和电子表格内置函数名。

如果在电子表格上进行编辑时,如果studyBudy2()函数执行了您需要触发的操作,则可以将其重命名为onEdit,声明一个调用studyBudy2()的onEdit函数,或者创建一个可安装的触发器,以调用studyBudy2()。

请记住,只有用户直接在电子表格上进行的编辑才会在编辑触发器上触发简单/可安装的操作。如果您希望在提交表单响应时发生问题,则应使用表单提交可安装触发器。

有关更多详细信息,请阅读https://developers.google.com/apps-script/guides/triggers/