0

スプレッドシートを使用して、独自の添付ファイルを含む大量の Google メールを送信したいと考えています。このスプレッドシートには、電子メール アドレス、コンテンツ テンプレート、およびそれぞれの添付 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);
    }
  }
}
4

1 に答える 1

1

GmailApp はドキュメントでこれをサポートしています

sendEmail機能:

https://developers.google.com/apps-script/reference/gmail/gmail-app#sendemailrecipient,-subject,-body,-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);
    }
  }
}

参考文献

于 2021-03-09T11:06:58.057 に答える