Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 检查谷歌表单回复的某些标准,然后发送电子邮件回复_Google Apps Script - Fatal编程技术网

Google apps script 检查谷歌表单回复的某些标准,然后发送电子邮件回复

Google apps script 检查谷歌表单回复的某些标准,然后发送电子邮件回复,google-apps-script,Google Apps Script,编辑:更多信息。每个特殊的ed活页夹都需要审查以检查是否符合要求。该审查是一份60多份问卷,我们将其转化为谷歌表格,以便于沟通,并在我们的地区保留有关符合或不符合要求的装订工数量的数据。实际上,有三个级别的错误可能会发生,需要不同的修复,从文书工作到重新培训。我们的目标是在填写表单时,根据发生的错误级别确定是否发送电子邮件。因此,如果我对6到9之间的任何问题回答“否”,那么我会收到一封电子邮件,说明出现了1级错误。第2级和第3级错误也是如此。我遇到的问题是,我只能在只发生一个错误或所有错误的情况

编辑:更多信息。每个特殊的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才会为真!你完全正确,谢谢。如何编写代码来区分错误级别?对不起,我对这个很陌生,正在努力学习。如果有人能分享一个好的视频或资源让我学习,我会很高兴。你可能会想用几个
    其他
    语句来处理