如何通过别名批量发送带有附件的 Gmail 电子邮件 GmailApp 在文档中对此提供了支持修改后的脚本参考资料

问题描述

我想使用电子表格批量发送带有唯一附件的 Google 邮件在这spreadsheet 中,我已经放置了电子邮件地址、内容模板和相应的附件 URL。我有下面的代码,它帮助我从我的收件箱成功发送了带有唯一附件的电子邮件

但是,我想更改此代码,以便从我已经在 Gmail 设置中设置的别名(例如:alias@gmail.com)发送电子邮件,并请让我知道所有更改应该是什么我对我的 Gmail 收件箱设置进行了设置,以便从别名发送电子邮件。如果有人能够告诉我如何更改下面的代码段来做到这一点,我将不胜感激。提前致谢!

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var numRows = 3;
  var datarange = sheet.getRange(startRow,1,numRows,5);
  var data = datarange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[2];
    var subject = "Attachments";
    var message = row[4];
    var fileId = row[3].split("/")[5];
    var emailSent = row[0];
    try {
      var file = DriveApp.getFileById(fileId);
      if (emailSent != EMAIL_SENT) {
        GmailApp.sendEmail(emailAddress,subject,message,{ attachments: [file.getBlob()] });
        sheet.getRange(startRow + i,1).setValue(EMAIL_SENT);
        // SpreadsheetApp.flush(); // I think that this might not be required to be used.
      }
    } catch(e) {
      console.log("File of " + row[3] + "cannot be retrieved. Error message is " + e.message);
    }
  }
}

解决方法

GmailApp 在文档中对此提供了支持

sendEmail 函数:

https://developers.google.com/apps-script/reference/gmail/gmail-app#sendemailrecipient,-options

getAliases 函数:

https://developers.google.com/apps-script/reference/gmail/gmail-app#getaliases

您需要确保您拥有 GmailApp 可以读取的别名,因此请尝试上面链接中的此代码段以查看您拥有哪些别名:

// Log the aliases for this Gmail account and send an email as the first one.
var me = Session.getActiveUser().getEmail();
var aliases = GmailApp.getAliases();
Logger.log(aliases);
if (aliases.length > 0) {
  GmailApp.sendEmail(me,'From an alias','A message from an alias!',{'from': aliases[0]});
} else {
  GmailApp.sendEmail(me,'No aliases found','You have no aliases.');
}

您需要完全选择这些值之一才能使用 {'from': alias} 参数

修改后的脚本

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var numRows = 3;
  var dataRange = sheet.getRange(startRow,1,numRows,5);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[2];
    var subject = "Attachments";
    var message = row[4];
    var fileId = row[3].split("/")[5];
    var emailSent = row[0];
    try {
      var file = DriveApp.getFileById(fileId);
      if (emailSent != EMAIL_SENT) {
        GmailApp.sendEmail(emailAddress,subject,message,{ attachments: [file.getBlob()],'from': 'alias@gmail.com'});
        sheet.getRange(startRow + i,1).setValue(EMAIL_SENT);
        // SpreadsheetApp.flush(); // I think that this might not be required to be used.
      }
    } catch(e) {
      console.log("File of " + row[3] + "cannot be retrieved. Error message is " + e.message);
    }
  }
}

参考资料

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...