代码之家  ›  专栏  ›  技术社区  ›  Vask

表单脚本(发送邮件时出现问题)

  •  0
  • Vask  · 技术社区  · 2 年前

    下午好,我正试图发送一封电子邮件和我写的代码(基本)它只会为每一行单独发送电子邮件,我需要它立即发送一封电子邮件。

    如果将代码可视化,您可以更好地理解

     for(var i =4; i\<=sheet.getLastRow(); i++){
    
    var inv = sheet.getRange(i,11).getValue();
    
    if(inv<=100){
        var ref = sheet.getRange(i,4).getValue();
            var name = sheet.getRange(i,5).getValue();
        var qnty= sheet.getRange(i,9).getValue();
            var mailAddress = emailRange.getValue();
    
        var message = 'Work' + ref + name +  qnty ;
        var subject = 'Test';
    
        MailApp.sendEmail(emailAddress, subject, message);
        sheet.getRange(i,13).setValue("Send"); 
            }
        }
     }
    
    0 回复  |  直到 2 年前
        1
  •  0
  •   TheWizEd    2 年前

    描述

    仅发送一封包含符合条件的项目列表的电子邮件 inv <= 100 将每个项目附加到消息字符串。

    如果您对每一行都使用getValue(),我建议您使用getValues()获取所有数据,然后循环遍历values数组。

    我会用setValues()来表示“发送”,但不知道该列中还有什么。

    剧本

    function test() {
      let sheet = ss.getSheetByName("INV");
      let emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheets2").getRange("A1");
      let mailAddress = emailRange.getValue();
      let values = sheet.getDataRange().getValues();
      let message = "";
      let subject = 'Test';
      // i is row -1
      for( let i=3; i<sheet.getLastRow(); i++ ){
    
        let inv = values[i][10];
      
        if( inv <= 100 ){
          let ref = values[i][3];
          let name = values[i][4];
          let qnty= values[i][8];
    
          message = message+'Work' + ref + name +  qnty +"\n" ;
          // unfortunately can't do anything about this without knowing what is column N
          sheet.getRange(i+1,13).setValue("Send");
        }
      }
      if( message === "" ) {
        SpreadsheetApp.getUi().alert("No items found");
      }
      else {
        MailApp.sendEmail(mailAddress, subject, message);
      }
    }
    

    参考