【问题标题】:Google App Script to trigger email用于触发电子邮件的 Google App 脚本
【发布时间】:2023-03-24 17:32:01
【问题描述】:

如果 Google 表格中的列 =X,我正在尝试收到一封电子邮件来提醒我。

我尝试使用通知系统,使用 EQ 运算符在单元格等于 X 时打开,这会更改单元格并且通知系统应该立即发送电子邮件。它不是那样工作的,电子邮件永远不会触发。

我想我需要一个脚本,如果单元格 =X 会触发电子邮件,这会很好,因为我可以自定义电子邮件,这样它就更有意义了。 (即“您正在举行活动的会议室已满员,您应该将其从预订表中删除”)

我是 Google 脚本的新手,如果 cell =X 脚本,我可能需要一些帮助来创建电子邮件触发器。

谢谢,

戴夫

【问题讨论】:

    标签: email triggers google-apps-script


    【解决方案1】:

    您需要添加一个脚本来运行 onEdit。

    function onEdit() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NameOfYourSheet");
      var currentValue = sheet.getRange("A5").getValue();
      if (currentValue == (whateverValueYoureLookingFor)) {
        MailApp.sendEmail("youremail@domain.com", "ALERT: The cell in the sheet is equal to X!", "The message body that you want to send.");
      }
    }
    

    【讨论】:

    • Phil 我似乎无法用这个脚本触发它,这可能是我做错了什么?这是单子。我尝试了各种方法,例如使用另一张表使用 EQ 运算符来衡量第一个表中的值,然后测试 TRUE。 [link]docs.google.com/spreadsheet/… 但是我遇到的一个问题是,当我将数据从一张表导入到另一张表时,当表单输入发生时,第二张表上的公式会发生变化?
    • 您要从中寻找的触发器是 onFormSubmit()。
    • 我把代码应该看起来像here。当您提交表单时,它会添加到最后一行,因此检索(最后一行,B 列)中的单元格。如果等于 6,则发送电子邮件。
    • 参见:developers.google.com/apps-script/understanding_events——表单提交事件部分描述了将传递给您的方法的参数。
    • 谢谢菲尔。我让两个脚本都可以工作。我对这两个脚本进行了轻微修改,以使它们能够混合从两者中得知。上面我将“if”行更改为: if (currentValue = "TRUE") 和您在链接中引用的脚本 (pastebin.com/Bm8qX2af) 当我删除了您在“if”中的一个 = 符号时工作“ 线。 if (cellValue == "6") 非常感谢您的代码。我将上面的内容添加到我已经在工作表中使用的脚本中以提供电子邮件确认,现在我会知道何时达到房间容量。再次感谢,戴夫
    【解决方案2】:
    function testSchemas() {
      var htmlout = HtmlService.createTemplateFromFile('data').evaluate().getContent();
    
     var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('All Exams Tracker');
    var range = sheet.getDataRange();
      var values = range.getValues();
      var last_row = sheet.getLastRow();
      var today = new Date()
    
    
      for (var i =3 ;i < last_row;i++) {
       var temp = values[i][4];
        var e_date = new Date(temp);
        if ((( e_date - today)/(1000*60*60*24)) < 10 && e_date > today){
          var cond = "done" }
        break; }
    Logger.log(cond);  
    
      if (cond == "done"){
    
    
     MailAppv.sendEmail({
        to: '*************************************************************',
         subject: 'Exam Coming Next Week',
        htmlBody: htmlout,
      });
    
      }}
    

    这将在触发时生成 html 文件数据(如下所示)。

    <html>
    <head>
    <style>
    table, th, td {
        border: 1px solid black;
        border-collapse: collapse;
    }
    th, td {
        padding: 5px;
    
    }
    </style>
    </head>
    <table style = "border: 1px solid black; border-style: collapse;">
    <?   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('All Exams Tracker');
    var range = sheet.getDataRange();
      var values = range.getValues();
      var last_row = sheet.getLastRow();
    
      var today = new Date();?>
    
      <tr style="border: 1px solid black; padding: 10px;">
    
        <th style="border: 1px solid black; padding: 10px;">Exam Name</th>
        <th style="border: 1px solid black; padding: 10px;">Exam Date</th>
        <th style="border: 1px solid black; padding: 10px;">Priority</th>
        <th style="border: 1px solid black; padding: 10px;">College Predictor Status</th>
         <th style="border: 1px solid black; padding: 10px;">Rank Predictor Status</th>
    
    </tr>
    
      <? for (var i =3 ;i < last_row;i++) {
       var temp = values[i][4];
        var e_date = new Date(temp);
        if ((( e_date - today)/(1000*60*60*24)) < 10 && e_date > today) {
    
    
       if (values[i][12] != ""){
      var col_status = "Live"}
      else
      if (values[i][11] != ""){
      col_status = "Uploaded and Tested"}
      else
      if (values[i][10] != ""){
      col_status = "Data Processed"}
      else
      if (values[i][9] != ""){
      col_status = "Template Ready"}
    
      else
      col_status = "Not initiated yet"
    
       if (values[i][19] != ""){
       var rank_status = "Live"}
      else
      if (values[i][18] != ""){
      rank_status = "Uploaded and Tested"}
      else
      if (values[i][17] != ""){
      rank_status = "Data Processed"}
      else
      rank_status = "Not Initiated yet"   
    
    
      ?>
    <tr>
    
        <td style="border: 1px solid black; padding: 10px;"><?= values[i][2]?></td>
        <td style="border: 1px solid black; padding: 10px;"><?= values[i][4]?></td>
        <td style="border: 1px solid black; padding: 10px;"><?= values[i][8]?></td>
        <td style="border: 1px solid black; padding: 10px;"><?= col_status?></td>
        <td style="border: 1px solid black; padding: 10px;"><?= rank_status?></td>
    
    </tr>
    <? } }?>
    </table>
    <br><br>
    <p><a href="https://docs.google.com/spreadsheets/d/1fzbRCvnNfuVTCEuRnncJxb1VW7f-tkSEywntzaTugZQ/edit#gid=0">Click Here For More Details</a></p>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2014-01-12
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多