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
Javascript 如何使此功能发送一次电子邮件并将实体更改为;勾选“;_Javascript_Google Apps Script_Web Applications - Fatal编程技术网

Javascript 如何使此功能发送一次电子邮件并将实体更改为;勾选“;

Javascript 如何使此功能发送一次电子邮件并将实体更改为;勾选“;,javascript,google-apps-script,web-applications,Javascript,Google Apps Script,Web Applications,您好,我有这个功能,发送电子邮件,如果一个实体包含“126d”。它当前在每次更改上运行,使得它在每次有带有“126d”的实体和每次有更改时都向我发送电子邮件 显然,我只想收到一次电子邮件,因此我的解决方案是设置一个“状态”列,当实体包含“126d”并且电子邮件已发送一次时,它会将同一行中的“状态”更改为“已检查”。不幸的是,到目前为止,我试图让它发挥作用的努力都失败了。谢谢你的帮助,谢谢 function CheckMail() { var mailRange = SpreadsheetAp

您好,我有这个功能,发送电子邮件,如果一个实体包含“126d”。它当前在每次更改上运行,使得它在每次有带有“126d”的实体和每次有更改时都向我发送电子邮件

显然,我只想收到一次电子邮件,因此我的解决方案是设置一个“状态”列,当实体包含“126d”并且电子邮件已发送一次时,它会将同一行中的“状态”更改为“已检查”。不幸的是,到目前为止,我试图让它发挥作用的努力都失败了。谢谢你的帮助,谢谢

function CheckMail() {
  var mailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List").getRange("A1:A500"); 
  var data = mailRange.getValues(); 
  var dataLength = data.length;
      for(var i=0;i<dataLength;i++){
        if(data[i][0] == "126d" || data[i][0] == "126D") {
          var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List").getRange("B1:B500"); 
          var name = range.getValues();
          var emailAddress = "email@gmail.com"
          var subject = "New parcel from " + name[i][0];
          var message = "Row " + (i+1) + " www.spreadsheet.com";
          MailApp.sendEmail(emailAddress, subject, message);
        }
      }
}
函数CheckMail(){
var mailRange=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“列表”).getRange(“A1:A500”);
var data=mailRange.getValues();
var dataLength=data.length;

对于(var i=0;i您没有尝试在任何地方设置值“checked”

这段代码应该做您需要的事情,对范围和列进行一些小的修改

function CheckMail() {
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List")
 var data = ss.getRange("A1:D500").getValues(); // Read all data in A1:D500

 for(var i=0;i<data.length;i++){ // Loop through all data
     if((data[i][0] == "126d" || data[i][0] == "126D") && data[i][2] != "checked") { // Check that A[i] is 126d and D[i] is not checked ([C] means col C)    
  var emailAddress = "mail@gmail.com" 
  var subject = "New parcel from " + data[i][1]; // get the subject from col B
  var message = "Row " + (i+1) + " www.spreadsheet.com"; // Message with row number
  MailApp.sendEmail(emailAddress, subject, message); // Send the mail
  ss.getRange(i + 1, 3).setValue("checked") // Set the 3rd column (D) to checked if the mail was sent
  }
 }
}
函数CheckMail(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“列表”)
var data=ss.getRange(“A1:D500”).getValues();//读取A1:D500中的所有数据

for(var i=0;iThanks!我试着用for循环之外的另一个循环来做,不知道为什么我把它复杂化了。奇怪。在发送电子邮件后,它添加了“checked”状态,但如果电子表格随后更新,它仍会发送一封新的电子邮件。@请编辑您的答案并粘贴更新的代码。更有可能的是if语句中的条件没有更改?数据[i][4]!=“已检查”4应该改为选中的列的索引。我将它改为3,也尝试使用4,但它不起作用。我认为问题可能是“and”条件只适用于“126D”,所以我删除了“126D”条件,但仍然不起作用。@Nest请查看更新的代码。.封装了OR条件并更改了and条件中的列索引。
function CheckMail() {
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List")
 var data = ss.getRange("A1:D500").getValues(); // Read all data in A1:D500

 for(var i=0;i<data.length;i++){ // Loop through all data
     if((data[i][0] == "126d" || data[i][0] == "126D") && data[i][2] != "checked") { // Check that A[i] is 126d and D[i] is not checked ([C] means col C)    
  var emailAddress = "mail@gmail.com" 
  var subject = "New parcel from " + data[i][1]; // get the subject from col B
  var message = "Row " + (i+1) + " www.spreadsheet.com"; // Message with row number
  MailApp.sendEmail(emailAddress, subject, message); // Send the mail
  ss.getRange(i + 1, 3).setValue("checked") // Set the 3rd column (D) to checked if the mail was sent
  }
 }
}