gpt4 book ai didi

javascript - OnEdit() 谷歌脚本触发器在函数中使用

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:04 25 4
gpt4 key购买 nike

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

我想通过将类(class)输入 Google 表单来帮助大类学生找到一起学习的人。从那里,他们会自动通过电子邮件收到一份与他们参加同一类(class)的人员名单,这些人员也在寻找同一类(class)或同一讲座中的人员进行学习。学生输入姓名、学号、电子邮件、类(class) CRN#、类(class)名称和讲师。它被放入 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;
}

最佳答案

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

function onEdit(e){
//do something
}

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

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

请记住,只有用户直接在电子表格上进行的编辑才会触发简单/可安装的编辑触发器。如果您希望在提交表单响应时触发某些内容,那么您应该使用表单提交可安装触发器。

更多详情请阅读https://developers.google.com/apps-script/guides/triggers/

关于javascript - OnEdit() 谷歌脚本触发器在函数中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51789901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com