В столбце «X» есть письма, в столбце «Y» - названия файлов PDF для отправки (хранятся в папке «Z» на диске), как мне отправить каждое письмо с его PDF? - PullRequest
2 голосов
/ 07 октября 2019

У меня есть этот скрипт, который выполняет следующие действия:

Запрашивает столбец с электронными письмами. Подскажите тему письма. Запрашивайте тело письма. Подскажите для начального ряда. Сценарий отправляет одно электронное письмо для каждой строки на листе.

Я хотел бы расширить сценарий, чтобы также запрашивать столбец с вложением, которое должно быть добавлено к каждому электронному письму (запрос для столбца не является проблемой). Такой столбец будет иметь имя файла.

Идея состоит в том, что, учитывая имя файла, он будет искать его в определенной папке и добавлять в качестве вложения (эта часть мне нужна с вашей помощью).

function emailSenderSameMessageDifferentPdf() {

  var activeSs = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var activeSsLastRow = activeSs.getLastRow();

  // Prompt for the column with the emails

  var activeSsUi = SpreadsheetApp.getUi();
  var activeSsUiEmailsColumn = activeSsUi.prompt("Email", "Enter the number of the column with the emails", activeSsUi.ButtonSet.OK_CANCEL);
  var activeSsUiEmailsColumnText = activeSsUiEmailsColumn.getResponseText();
  var activeSsUiEmailsColumnButton = activeSsUiEmailsColumn.getSelectedButton();

  if(activeSsUiEmailsColumnButton == activeSsUi.Button.CANCEL) {

    return;

  }

  // Prompt for the subject of the email

  var activeSsUiEmailsSubject = activeSsUi.prompt("Email", "Enter the subject of the email", activeSsUi.ButtonSet.OK_CANCEL);
  var activeSsUiEmailsSubjectText = activeSsUiEmailsSubject.getResponseText();
  var activeSsUiEmailsSubjectButton = activeSsUiEmailsSubject.getSelectedButton();

  if(activeSsUiEmailsSubjectButton == activeSsUi.Button.CANCEL) {

    return;

  }

  // Prompt for the body of the email

  var activeSsUiEmailsBody = activeSsUi.prompt("Email", "Enter the body of the email", activeSsUi.ButtonSet.OK_CANCEL);
  var activeSsUiEmailsBodyText = activeSsUiEmailsBody.getResponseText();
  var activeSsUiEmailsBodyButton = activeSsUiEmailsBody.getSelectedButton();

  if(activeSsUiEmailsBodyButton == activeSsUi.Button.CANCEL) {

    return;

  }

  // Prompt for the starting row

  var activeSsUiEmailsRow = activeSsUi.prompt("Email", "Enter the number of the starting row", activeSsUi.ButtonSet.OK_CANCEL);
  var activeSsUiEmailsRowText = activeSsUiEmailsRow.getResponseText();
  var activeSsUiEmailsRowButton = activeSsUiEmailsRow.getSelectedButton();

  if(activeSsUiEmailsRowButton == activeSsUi.Button.CANCEL) {

    return;

  }

  // Iterate through all the rows with emails

  for (activeSsUiEmailsRowText = activeSsUiEmailsRowText; activeSsUiEmailsRowText <= activeSsLastRow; activeSsUiEmailsRowText++) {

    var activeSsUiEmailsColumnCurrentAddress = activeSs.getRange(activeSsUiEmailsRowText, activeSsUiEmailsColumnText).getValue();

    GmailApp.createDraft(activeSsUiEmailsColumnCurrentAddress, activeSsUiEmailsSubjectText,  null, {htmlBody:activeSsUiEmailsBodyText, cc: "mail@example.com"});
    // GmailApp.sendEmail(activeSsUiEmailsColumnCurrentAddress, activeSsUiEmailsSubjectText,  null, {htmlBody:activeSsUiEmailsBodyText, cc: "mail@example.com"});

  }
}

1 Ответ

1 голос
/ 08 октября 2019

Вы можете сделать это, создав ваше сообщение / черновик, используя объект параметров .

Ваш код будет выглядеть примерно так:

var filename = "whatever you got from the column";
var file = DriveApp.getFilesByName(filename);
if (file.hasNext()) {
  MailApp.sendEmail(emailAddress, subject, message, {
    attachments: [file.next().getAs(MimeType.PDF)],
    name: filename
}

Однако,это выберет первый файл с таким именем. Я бы рекомендовал вместо этого использовать идентификатор файла.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...