отправлять почту с вложением в каждой строке в скрипте приложения Google - PullRequest
0 голосов
/ 05 ноября 2019

Я использую вложение в каждой ячейке для автоматической отправки почты.

Примечание:

, столбец 0: имя, столбец 4: адрес электронной почты, столбец 5: год, столбец 6: вложение файла.

var EMAIL_SENT = 'EMAIL_SENT';

//Sends non-duplicate emails with data from the current spreadsheet.
function autosendEmails() { 
  var ws = SpreadsheetApp.openById('Your Sheet Id'); 
  var sheet= ws.getSheetByName('Mail Merge'); 
  var startRow = 2; // First row of data to process 
  var numRows = ws.getLastRow(); // Number of rows to process // Fetch the range of cells E2:H3 
  var dataRange = sheet.getRange(startRow, 1, numRows, 7);

  // Fetch values for each row in the Range. 
  var data = dataRange.getValues();

  // var FileID = DriveApp.getFileById('Your File Id')
  for (var i = 0; i < data.length; i++) { 
    var row = data[i]; var emailAddress = row[4]; // First column
    var Subjectmail ="Test mail"
    var bodyemail = "Dear" 
    var pdfname = row[6]; 
    var emailSent = row[7]; // Four column 
    if (emailSent !== EMAIL_SENT) { 
      // Prevents sending duplicates 
      var subject = 'Test mail'; 
      MailApp.sendEmail(emailAddress, Subjectmail, bodyemail, {attachments: pdfname}); 
      sheet.getRange(startRow + i, 8).setValue(EMAIL_SENT); // Make sure the cell is updated right away in case the script is interrupted SpreadsheetApp.flush();
    } 
  } 
}

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Учитывая, что вы извлекаете имя файла из var pdfname = row[6];, то, что вы должны сделать, чтобы прикрепить файл к вашей почте и отправить его, это получить фактический файл с вашего диска и поместить его в массив какЯ сделал в этом примере:

// Inside your function, just change this line 
function autosendEmails() { 
...
MailApp.sendEmail(emailAddress, Subjectmail, bodyemail, {
        attachments: buildAttachment(pdfname) // Call this function to be able to send an attachment file 
      }); 
...
}

// Add this function to your code
function buildAttachment(pdfname){
  // Initialize the array
  var fileArr = [];
  // Get the file form your drive
  var getMyFile = DriveApp.getFilesByName(pdfname).next();
  // build an array
  fileArr.push(getMyFile);
  // return the file within an array
  return fileArr;
}

Ссылка

Этот пост может помочь вам тоже.

Документы

0 голосов
/ 05 ноября 2019

Это может быть лучше для вас:

Прочитайте комментарии для объяснения.

function autosendEmails() { 
  var ws = SpreadsheetApp.openById('Your Sheet Id'); 
  var sheet= ws.getSheetByName('Mail Merge'); 
  var startRow = 2; // First row of data to process 
  var dataRange = sheet.getRange(startRow, 1, sheet.getLastRow()-1,sheet.getLastColumn());//you were missing your last column and you were grabbing an empty row and the end of your list because the third parameter is the number of rows in the data not the number of rows in the sheet.
  var data=dataRange.getValues();
  for (var i=0;i<data.length;i++) { 
    var row=data[i]; 
    var emailAddress = row[4]; // First column
    var Subjectmail ="Test mail"
    var bodyemail = "Dear" 
    var pdfname = row[6]; 
    var emailSent = row[7]; // Four column 
    if (emailSent !== "EMAIL_SENT") { 
      MailApp.sendEmail(emailAddress, Subjectmail, bodyemail, {attachments: ["an array of files"]});//attachments should be an array of files not an array of filenames 
      sheet.getRange(startRow + i, 8).setValue(EMAIL_SENT); 
    } 
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...