列中的某个单元格具有特定值时自动发送电子邮件

时间:2019-05-28 10:45:44

标签: google-apps-script google-sheets

我有一列包含用于信号的某些文本。 当列中的单元格值包含文本“ Signal1”或“ Singal2”时,请发送标题为“找到信号”的电子邮件。 扫描列时,可以忽略期望“ Signal1”或“ Signal2”的任何其他单元格。

这是我到目前为止所拥有的,但仅用于一个单元的一个信号:

 function CheckSignals() {

   // Fetch data
   var dataRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Signal").getRange("H2:H29"); 
   var data = dataRange.getValue();

   // Check for signals
   if (data = "Go Short" || "Go Long"){

     // Fetch the email address and send
     var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email").getRange("C2");
     var emailAddress = emailRange.getValues();

     // Send Alert Email.
     var message = 'Signal1 ' + data; // Second column
     var subject = 'Signals were found';
     MailApp.sendEmail(emailAddress, subject, message);
     }
 }

这是可行的,但是太简单了... 我必须在该列中扫描两个信号: “ Singal1”和“ Signal2”。

例如,如果扫描H列,则找到三个“ Signal1”和/或“ Signal2”。电子邮件内容应包含找到它的每个单元格的整行信息。

示例电子邮件:

主题:找到信号

消息:

在以下行中找到了

信号1,其中包含以下数据: 第6行:来自第6行A列的数据,来自第6行B列的数据,来自第6行C列的数据,来自第6行D列的数据,...直到H列

Row11:布朗,丹佛,1967年,23日,11:00、34等...

电子表格始终有29行,其中第一行是标题。 电子表格有9列(A-H)。

1 个答案:

答案 0 :(得分:0)

  • 当列“ H2:H29”的值为Go ShortGo Long时,您要检索行。
    • 值始终位于“ A2:H29”中。
  • 您希望将检索到的行作为一封电子邮件发送。

如果我的理解是正确的,那么该修改如何?

修改点:

  • 首先,获取“ A2:H29”的值。然后,检索“ H”列中包含Go ShortGo Long的行。
  • 在此修改后的脚本中,当检索“ H”列中包含Go ShortGo Long的行时,将创建消息的基址。

修改后的脚本:

function CheckSignals() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // Fetch data
  var data = ss.getSheetByName("Signal").getRange("A2:H29").getValues();

  // Check for signals
  var contents = data.map(function(e, i) {return e[7] == "Go Short" || e[7] == "Go Long" ? e[7] + " Row " + (i + 2) + ": " + e.join(", ") : ""}).filter(String);

  if (contents.length > 0) {

    // Fetch the email address and send
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email").getRange("C2");
    var emailAddress = emailRange.getValues();

    // Send Alert Email.
    var message = contents.join("\n");
    var subject = 'Signals were found';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

注意:

  • 脚本和问题之间message的格式是不同的。因此,在此修改中,使用了必需的值,因为我无法理解所需的正确值。请根据您的情况进行修改。
  • 我不了解Second column中的var message = 'Signal1 ' + data; // Second column

参考文献:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。