【问题标题】:Google Apps Script send attachmentGoogle Apps 脚本发送附件
【发布时间】:2021-10-01 12:53:17
【问题描述】:

目前我可以使用此脚本将 pdf 从 google 电子表格发送到带有附件的电子邮件,但附件发送失败

这是我当前的脚本:

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").hideSheet();
  var startRow = 2; // First row of data to process
  var getLastRow = 4000; // Number of rows to process
  var dataRange = sheet.getRange(startRow, 4, getLastRow, 7);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var trigger = row[0];
    var emailAddress = row[2]; // Email column
    if(emailAddress != "" && emailAddress != " "){ 
      var message = "Hi,\n\nSilahkan download dan print attachment ini.\n\nTerima Kasih,\nSistemHBR"; // Content column
      var subject = "FORM CUTI";
      var status_email = row[6];
      if ((trigger != 'FALSE') && (status_email != 'EMAIL_SENT')); // Prevents sending duplicates
      attachments = [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("FORM CUTI")]; { 
        MailApp.sendEmail(emailAddress, subject, message);
        sheet.getRange(startRow + i, 7).setValue('EMAIL_SENT');
        // Make sure the cell is updated right away in case the script is interrupted
        SpreadsheetApp.flush();
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
        
  }
  //MailApp.sendEmail(message);
  //SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
   }
  }
}

我上面的代码有什么问题?

谢谢

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    在您的脚本中,我认为当if ((trigger != 'FALSE') &amp;&amp; (status_email != 'EMAIL_SENT'))true 时,您可能想要发送电子邮件。那么,下面的修改呢?

    发件人:

    if ((trigger != 'FALSE') && (status_email != 'EMAIL_SENT')); // Prevents sending duplicates
     attachments = [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("FORM CUTI")]; { 
       MailApp.sendEmail(emailAddress, subject, message);
       sheet.getRange(startRow + i, 7).setValue('EMAIL_SENT');
       // Make sure the cell is updated right away in case the script is interrupted
       SpreadsheetApp.flush();
       SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
    
    }
    

    收件人:

    if ((trigger != 'FALSE') && (status_email != 'EMAIL_SENT')) {
      attachments = [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("FORM CUTI")];
      MailApp.sendEmail(emailAddress, subject, message, {attachments: attachments});
      sheet.getRange(startRow + i, 7).setValue('EMAIL_SENT');
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
    }
    
    • 在这种情况下,当(trigger != 'FALSE') &amp;&amp; (status_email != 'EMAIL_SENT')true 时,将通过包含附件文件发送电子邮件。

    参考资料:

    【讨论】:

    • 您好 Tanaike,感谢您的提前我尝试了您的脚本,它工作正常... pdf 发送成功,但它一直发送状态为“EMAIL_SENT”的副本
    • 哦,我忘记在发送电子邮件后将触发器 TRUE 更改为 FALSE
    • @IndraAzenx the pdf sent successfully but it keep sent the duplicates which has status 'EMAIL_SENT' on it 在这种情况下,我认为您为 status_email 获得的列是 10(因为您的范围中的第一列是 4),而您正在编写的列 @ 987654331@ 是 7。这种差异可能解释了为什么您会得到重复。
    • 哦,是的,我的错,它现在可以工作了......谢谢
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2019-10-28
    • 2013-08-15
    相关资源
    最近更新 更多