将具有不同PDF的电子邮件发送到不同的电子邮件附件

时间:2019-01-30 01:24:15

标签: javascript google-apps-script google-sheets google-docs email-attachments

我正在尝试自动将电子邮件发送到具有不同PDF(10)的多个发件人(10电子邮件)。有没有办法在电子邮件地址旁边的电子表格列中附加pdf文件?然后发送带有PDF附件的销售报价的电子邮件。这可以在Google工作表的JS中完成吗?

感谢有人帮助我。

3 个答案:

答案 0 :(得分:1)

如果您使用的是Google表格,则可以,但是必须发挥创意。实际上,您可以使用Google脚本从Google表格发送带有JavaScript的电子邮件。我认为,如果您在同一个工作簿中使用隐藏的工作表来发挥创造力,则可以使用一个公式将工作表填充为PDF的布局,然后将该工作表导出为PDF格式以附加到电子邮件...这是可行的。

您可能会发现一些灵感here

从Google工作表示例here基本发送电子邮件。

答案 1 :(得分:0)

因此,JavaScript在客户端运行。这意味着您的代码正在运行用户浏览器。简而言之,您不能仅使用JavaScript发送电子邮件。您将需要一台服务器来做到这一点。

例如,您可以将Spring Boot与Java一起使用,该Java已经具有很多实现方法,可以使您的任务(即发送电子邮件)非常容易。

看看http://spring.io/projects/spring-boot

答案 2 :(得分:0)

您可以按照以下步骤进行操作,

  1. 在一个Google驱动器文件夹上上传10个附件

  2. 在您的Google表格上添加以下脚本以获取文件ID

function listFilesInFolder() {

    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FileID").activate(); //The name of the google sheet is FileID in my case

    var sheet = SpreadsheetApp.getActiveSheet();
    sheet.appendRow(["File Name", "File-Id"]);

  //change the folder ID below to reflect your folder's ID (look in the URL when you're in your folder)

    var folder = DriveApp.getFolderById("*[Enter Folder ID here]*");
    var contents = folder.getFiles();

    var cnt = 0;
    var file;

    while (contents.hasNext()) {
        var file = contents.next();
        cnt++;

           data = [
                file.getName(),
                file.getId(),
            ];

            sheet.appendRow(data);
    }
}
  1. 构建一个简单的脚本来发送电子邮件,并将您的10封电子邮件放在一列中,并将根据上述代码生成的所有文件ID放在下一列中。以下是从电子表格发送电子邮件的示例脚本,
function sendEmails() {

  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails").activate(); // Emails is the sheet which has the email and File ID columns

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();

  var templateText =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 1).getValue();  // Template is the sheet which has my email body

  for (var i = 2;i<=lr;i++){

    var currentEmail = ss.getRange(i, 1).getValue();  //Email IDs are on the first column for me

    var currentAttachment = ss.getRange(i, 2).getValue();    //Assuming your File IDs are on the second column


    var waiver = DriveApp.getFileById(currentAttachment);
    var liabilityWaiver = waiver.getAs(MimeType.PDF);

MailApp.sendEmail(currentEmail, subjectLine, messageBody, {attachments:[liabilityWaiver],
                                                               cc:'abc@abc.com'});  // the cc is in case you want to CC someone else on the email

我希望这会有所帮助!