Я пытаюсь настроить автоматический список адресов электронной почты каждый понедельник в листах / скриптах Google - PullRequest
0 голосов
/ 19 мая 2019

Я могу получать письма для отправки, но:

  • Невозможно выполнить фильтрацию, ЕСЛИ электронное письмо отправлено нам на основе столбца состояния
  • Невозможно отформатировать письмо, чтобы оно было аккуратным, просто отправив следующим образом:

Уважаемый Пол! Работает сценарий электронной почты8 Сб 25 мая 2019 00:00:00 GMT + 0100
(BST) Крайние сроки Документ

  • Я не могу получить электронное письмо по адресуотправить с правильным часовым поясом Я нахожусь в часовом поясе gmt, он продолжает отправлять часовой пояс bst.
  • Я не могу понять, как заставить этот скрипт автоматически запускаться каждое утро понедельника 8 утра

Я объединил несколько фрагментов кода. Я отредактировал свой лист, чтобы упростить фильтрацию различающихся rowData

Пример моего листа:

Col A В раскрывающемся меню выберите Agent (names)

Col B Раскрывающееся меню выбора адресов электронной почты

Col C Назначение col = обычный текст

Col D Раскрывающееся меню с параметрами состояния (Не запущено, Выполняется, пропущено или Готово)

Col E To, простой текст, чтобы добавитьк назначению.Идея состоит в том, чтобы предоставить агентам более подробную информацию о плане действий, необходимом

Col F Дата исполнения, отформатированная только до даты (без отметки времени)

Col G = Гиперссылка (URL, "Deadline Doc") -> Создано при попытке добавить + сообщение 4 + '';к коду для форматирования электронной почты.

function sendEmailswithDetails() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.setActiveSheet(ss.getSheetByName("Email2"));
    var sheet = SpreadsheetApp.getActiveSheet();
    var dataRange = sheet.getRange("A4:G11");
    var data = dataRange.getValues(); 
    for (i in data) {
        var rowData = data[i];
        var recipient = rowData[0];
        var emailAddress = rowData[1];
        var message1 = rowData[2];
        var parameter1 = rowData[3]
        var message2 = rowData[4];
        var message3 = rowData[5];
        var message4 = rowData[6]
        var message = 'Dear ' + recipient + ' ' + message1 + ' ' + message2 + ' ' + message3 + ' ' + message4 + ' ';
        var subject = 'Your deadlines this week';

        // Check deadlines
        if (Status = ("Not Started"), ("In Progress")){
            // Fetch Status
            var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email2").getRange("B4:B11");
            var emailAddress = emailRange.getValues();
            MailApp.sendEmail(emailAddress, subject, message);
        }
    }
}

Ожидаемые результаты:

  1. Письма отправляются только в том случае, если статус = В процессе или не запущен.
  2. Письмо отправляет объединениестолбцы сообщений 1-4.
  3. Электронная почта аккуратно отформатирована в отдельные строки.

Фактические результаты:

  1. Электронная почта отправляется на любые электронные письма, добавленные на адрес электронной почты. Адресстолбец
  2. Столбец состояния не влияет на то, отправлено письмо или нет

1 Ответ

0 голосов
/ 20 мая 2019

Попробуйте это:

Я предположил, что статус был столбцом 11, потому что это был единственный неиспользуемый столбец в диапазоне.

function sendEmailswithDetails() {
  var ss=SpreadsheetApp.getActive();
  var sheet=ss.getSheetByName("Email2");
  var dataRange=sheet.getRange("A4:G11");
  var data=dataRange.getValues(); 
  for (var i=0;i<data.length;i++) {
    var rowData = data[i];
    var recipient = rowData[0];
    var emailAddress = rowData[1];
    var message1 = rowData[2];
    var parameter1 = rowData[3]
    var message2 = rowData[4];
    var message3 = rowData[5];
    var message4 = rowData[6]
    var message = 'Dear ' + recipient + ' ' + message1 + ' ' + message2 + ' ' + message3 + ' ' + message4 + ' ';
    var subject = 'Your deadline is this week';
    var Status=rowData[7];//I guessed because it's the only column left
    if (Status=="Not Started" || Status=="In Progress"){
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(i+4,11).setValue('Sent');

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