Google apps script 检查谷歌表单回复的某些标准,然后发送电子邮件回复
编辑:更多信息。每个特殊的ed活页夹都需要审查以检查是否符合要求。该审查是一份60多份问卷,我们将其转化为谷歌表格,以便于沟通,并在我们的地区保留有关符合或不符合要求的装订工数量的数据。实际上,有三个级别的错误可能会发生,需要不同的修复,从文书工作到重新培训。我们的目标是在填写表单时,根据发生的错误级别确定是否发送电子邮件。因此,如果我对6到9之间的任何问题回答“否”,那么我会收到一封电子邮件,说明出现了1级错误。第2级和第3级错误也是如此。我遇到的问题是,我只能在只发生一个错误或所有错误的情况下收到一封电子邮件。我制作了一份测试表,测试代码的问题更少: 此外,这里还有一个链接,可以链接到表单响应电子表格,这样您就可以了解我正在努力实现的目标 最后,以下是我用于示例的代码:Google apps script 检查谷歌表单回复的某些标准,然后发送电子邮件回复,google-apps-script,Google Apps Script,编辑:更多信息。每个特殊的ed活页夹都需要审查以检查是否符合要求。该审查是一份60多份问卷,我们将其转化为谷歌表格,以便于沟通,并在我们的地区保留有关符合或不符合要求的装订工数量的数据。实际上,有三个级别的错误可能会发生,需要不同的修复,从文书工作到重新培训。我们的目标是在填写表单时,根据发生的错误级别确定是否发送电子邮件。因此,如果我对6到9之间的任何问题回答“否”,那么我会收到一封电子邮件,说明出现了1级错误。第2级和第3级错误也是如此。我遇到的问题是,我只能在只发生一个错误或所有错误的情况
function sendEmail() {
var ss = SpreadsheetApp.getActive();
var responses = ss.getSheetByName('Sheet1');
var data = responses.getRange(2,1,responses.getLastRow()
-1,7).getValues();
Logger.log(data);
data.forEach(function(row,i) {
var email = row[1];
var answer = row[2];
var replied = row[6];
var level1 = row[3];
var level2= row[4];
var level3 = row[5];
if (replied == '') {
//if (level1 == 'No' && level2 =='No' && level3 == 'No') {
//var body = "The Sped compliance form submitted shows levels 1,2,
and 3 erorrs. Please review check the district review for further insructions";
//}
if (level1 == 'No'){
Logger.log('yes response');
Logger.log(email);
var body = "The SPED compliance check has found a Level 1 error, please see documentation to fix errors.";
}
else if (level2 == 'No') {
Logger.log("no Response");
Logger.log(email);
var body = "The SPED compliance check has found a Level 2 error, please see documentation to fix errors";
}
else if (level3 == 'No'){
var body = "The SPED compliance check has found a Level 3 error, please see documentation to fix errors";
}
else {
}
var subject = "thank you for submitting your form";
GmailApp.sendEmail(email, subject, body);
var d = new Date();
responses.getRange(i + 2,7).setValue(d);
}
});
如果某人对1-3中的任何问题回答“否”,则为1级错误;如果某人对6-9中的任何问题回答“否”,则为2级错误;如果某人对11-15中的任何问题回答“否”,则为3级错误。如果只有1个错误(级别1、2或3),我可以发送一封回复电子邮件,但是如果一个人选择不发送多组回复,那么代码将不起作用。我是新手,所以我知道我遗漏了一些细节,只是不太确定如何让逻辑发挥作用
我已尝试添加一个子句,用于指定是否选择了所有级别。它不起作用
我想看到的是,如果一个人犯了1级和其他级别的错误,那么它将显示两个级别的错误。使用
计数器而不是所有这些条件如何?例如,根据级别:
级别1:如果答案为否,添加1
第2级:如果答案为否,添加10
第三级:如果答案是否定的,add100
这样,您只需要3个条件:我根据您的编辑了我的代码:
data.forEach(function(row,i, responses) {
var counter = 0;
var email = row[1];
var answer = row[2];
var replied = row[6];
var level1 = row[3];
var level2= row[4];
var level3 = row[5];
if (level1 == 'No'){
counter += 1;
}
if (level2 == 'No'){
counter += 10;
}
if (level3 == 'No'){
counter += 100;
}
if (counter < 10){
var body = "The SPED compliance check has found a Level 1 error, please see documentation to fix errors.";
} else if (counter >= 10 && counter < 100){
var body = "The SPED compliance check has found a Level 2 error, please see documentation to fix errors";
} else {
var body = "The SPED compliance check has found a Level 3 error, please see documentation to fix errors";
}
var subject = "thank you for submitting your form";
GmailApp.sendEmail(email, subject, body);
var d = new Date();
responses.getRange(i + 2,7).setValue(d);
});
data.forEach(函数(行、i、响应){
var计数器=0;
var电子邮件=行[1];
var应答=第[2]行;
var=第[6]行;
风险等级1=第[3]行;
var level2=第[4]行;
风险等级3=第[5]行;
如果(级别1==‘否’){
计数器+=1;
}
如果(level2==“否”){
计数器+=10;
}
如果(级别3==‘否’){
计数器+=100;
}
如果(计数器<10){
var body=“SPED合规性检查发现1级错误,请参阅文档以修复错误。”;
}否则如果(计数器>=10&&计数器<100){
var body=“SPED合规性检查发现2级错误,请参阅文档以修复错误”;
}否则{
var body=“SPED合规性检查发现了3级错误,请参阅文档以修复错误”;
}
var subject=“感谢您提交表格”;
发送电子邮件(电子邮件、主题、正文);
var d=新日期();
getRange(i+2,7)、setValue(d);
});
不过,如果您能看到代码的其余部分来了解它是如何开发的,那就太好了。使用计数器而不是所有这些条件如何?例如,根据级别:
级别1:如果答案为否,添加1
第2级:如果答案为否,添加10
第三级:如果答案是否定的,add100
这样,您只需要3个条件:我根据您的编辑了我的代码:
data.forEach(function(row,i, responses) {
var counter = 0;
var email = row[1];
var answer = row[2];
var replied = row[6];
var level1 = row[3];
var level2= row[4];
var level3 = row[5];
if (level1 == 'No'){
counter += 1;
}
if (level2 == 'No'){
counter += 10;
}
if (level3 == 'No'){
counter += 100;
}
if (counter < 10){
var body = "The SPED compliance check has found a Level 1 error, please see documentation to fix errors.";
} else if (counter >= 10 && counter < 100){
var body = "The SPED compliance check has found a Level 2 error, please see documentation to fix errors";
} else {
var body = "The SPED compliance check has found a Level 3 error, please see documentation to fix errors";
}
var subject = "thank you for submitting your form";
GmailApp.sendEmail(email, subject, body);
var d = new Date();
responses.getRange(i + 2,7).setValue(d);
});
data.forEach(函数(行、i、响应){
var计数器=0;
var电子邮件=行[1];
var应答=第[2]行;
var=第[6]行;
风险等级1=第[3]行;
var level2=第[4]行;
风险等级3=第[5]行;
如果(级别1==‘否’){
计数器+=1;
}
如果(level2==“否”){
计数器+=10;
}
如果(级别3==‘否’){
计数器+=100;
}
如果(计数器<10){
var body=“SPED合规性检查发现1级错误,请参阅文档以修复错误。”;
}否则如果(计数器>=10&&计数器<100){
var body=“SPED合规性检查发现2级错误,请参阅文档以修复错误”;
}否则{
var body=“SPED合规性检查发现了3级错误,请参阅文档以修复错误”;
}
var subject=“感谢您提交表格”;
发送电子邮件(电子邮件、主题、正文);
var d=新日期();
getRange(i+2,7)、setValue(d);
});
但是,如果您能看到代码的其余部分以了解它是如何开发的,那就太好了。您不应该使用Or运算符|
而不是And运算符&&
?否则,只有当您对所有三个级别都回答“否”时,if才会为真!你完全正确,谢谢。如何编写代码来区分错误级别?对不起,我对这个很陌生,正在努力学习。如果有人能分享一个好的视频或资源让我学习,我会很高兴的。你可能会想用几个else
语句来处理其他级别的检查。谢谢。我感谢你的帮助。我将研究添加其他语句。为了让我有一个好的开始,我想我必须为每个可能的答案写一个陈述?那么3^2或9个响应字符串?您能回答您的问题并给出一些输入和预期输出的示例吗?事实上,有点不清楚您期望的是什么。您不应该使用Or运算符而不是And运算符&
?否则,只有当您对所有三个级别都回答“否”时,if才会为真!你完全正确,谢谢。如何编写代码来区分错误级别?对不起,我对这个很陌生,正在努力学习。如果有人能分享一个好的视频或资源让我学习,我会很高兴。你可能会想用几个其他语句来处理