【问题标题】:Google Sheets email once based on cell values根据单元格值发送一次 Google 表格电子邮件
【发布时间】:2018-04-26 10:26:14
【问题描述】:

这个脚本工作,除了它发送多封电子邮件,这个脚本检查列 F 是否有任何高于 0 的值,然后发送一封电子邮件。列 F 是我手动输入数据的地方。试图让它只发送一封电子邮件并在 H 列中放置“已发送电子邮件”。然后检查 H 列是否有“已发送电子邮件”,如果有,请不要再次发送电子邮件。

Here Is what my sheet looks like

https://docs.google.com/spreadsheets/d/1o5jKMDECIFozrwAQx6EDvPL1NkoMQ1nbpkd6AdS9ULk/edit?usp=sharing

function sendEmails() {
  var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses"); //get the sheet "Form Responses"
  var data = sSheet.getRange(2, 1, sSheet.getLastRow(),sSheet.getLastColumn()).getValues(); //get the values of your table, without the header
 var lastRow = sSheet.getLastRow();//gets the last row of entered data

 var yourColumn = "H";//set your column
 var yourFunction = ("Email Sent");//whatever function or formula or data you want,just don't forget to use lastRow do do the row number
  sSheet.getRange(yourColumn+lastRow).setValue(yourFunction);

  for (var i = 0; i < data.length; i++) { // For each element of your tab

var row = data[i];

if(row[5] > 0) {  // If the person have got at least 1 report outstanding (column E)

    var body = "Good day "+ row[0] + " you have " + row[5] + " Internal Audit reports outstanding.";
    GmailApp.sendEmail(row[1],"Outstanding Internal Audit Reports", body); // Sending a mail to alert

  }
 } 
}

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    试试这个:

    function sendEmailsToTechs() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName("Form Responses");
      //var sh=ss.getActiveSheet();
      var rg=sh.getDataRange();
      var data=rg.getValues();
      var hRange=sh.getRange(2,8,sh.getLastRow(),1);
      var hValues=hRange.getValues();
      for (var i=1;i<data.length;i++){
        var row = data[i];
        if(row[5] && row[7]!='Email Sent') {
          var body = "Good day "+ row[0] + " you have " + row[5] + " Internal Audit reports outstanding.";
          GmailApp.sendEmail(row[1],"Outstanding Internal Audit Reports", body); 
          //Logger.log(body);
          hValues[i-1][0]='Email Sent';  
        }
      }
      hRange.setValues(hValues);//Puts the values into the spreadsheet all at one time. 
    }
    

    【讨论】:

    • 没有工作仍然向 F 列中的值发送电子邮件给每个人,它给我一个错误“无法将数组转换为对象 [][]。(第 14 行,文件“技术副本电子邮件“)解雇”
    • 我做了一些更改并根据自己的喜好对其进行了重新组织。我测试了它并且它有效。如果您访问实时表单响应,您可能希望使用lockservice。注意:它将第一次发送您的所有电子邮件,直到将第 8 列更新为“已发送电子邮件”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多