在功能OnEdit()谷歌脚本触发使用(OnEdit() google script trigger

2019-10-28 09:18发布

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

我想帮助学生在大班找人通过输入类转换成谷歌形式学习。 从那里,他们将被自动发送的人服用同一类的他们,谁也找人在同一个班或讲座与读书清单。 学生输入自己的姓名,学生证号码,电子邮件,类CRN#,类名和讲师。 它的投入谷歌电子表格和我操纵它就像一个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;
}

Answer 1:

onEdit是一个保留的函数名,其目的是为了宣布被用作简单的触发功能。

function onEdit(e){
  //do something
}

除了创造一个onEdit简单的触发器,我们可以创建一个在编辑安装触发 。 用于安装触发器如人所愿,但为了避免混淆,最好避免使用保留的函数的名称和电子表格内置的函数的名称可以被命名功能。

如果studyBudy2()函数,你需要时,编辑的电子表格上作出触发的,你可以将其重命名为onEdit,declara调用studyBudy2(一onEdit功能),或创建一个可安装的触发器调用studyBudy2()。

记住,只有通过用户直接在电子表格中进行的修改会开枪编辑触发一个简单/安装。 如果你想要的东西时,火形式响应被提交,那么你应该使用的表单提交安装触发。

欲知详情,请阅读https://developers.google.com/apps-script/guides/triggers/



文章来源: OnEdit() google script trigger use in function