Google Scripts: отправка двух разных писем на основе двух разных условий - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь написать скрипт Google для отправки двух разных писем с разными строками тем, в зависимости от того, какой столбец был отредактирован. Столбец D (Дата начала) будет генерировать входящее электронное письмо, а столбец E - входящее электронное письмо. Я могу отправить один или другой (то есть, если какой-либо столбец изменится, он отправит электронное письмо с одной строкой темы. Это код, который я использую - я хотел бы любую помощь! Спасибо - Николь

function triggerOnEdit(e)
{
  showMessageOnUpdate(e);
}

function showMessageOnUpdate(e)
{
  var range = e.range;

  SpreadsheetApp.getUi().alert("range updated " +   range.getA1Notation());  
}

function checkEndDate(e)
{
  var range = e.range;

  if(range.getColumn() <= 5 && 
     range.getLastColumn() >=5 )
  {
    var edited_row = range.getRow();

    var status = SpreadsheetApp.getActiveSheet().getRange(edited_row,5).getValue();
    {
      return edited_row;
    }
  }
  return 0;
}


function triggerOnEdit(e)
{
  showMessageOnUpdate(e);
}
function showMessageOnUpdate(e)
{
  var edited_row = checkEndDate(e);
  if(edited_row > 1)
  {
    SpreadsheetApp.getUi().alert("Row # "+edited_row+" start date edited!");
  }
}

//COMPOSE THE END DATE EMAIL

function sendEmailOnEndDate(e)
{
  var edited_row = checkEndDate(e);

  if(edited_row <= 0)
  {
    return;
  }

  sendEmailByRow(edited_row);
}

function sendEmailByRow(row)
{
  var values = SpreadsheetApp.getActiveSheet().getRange(row,1,row,4).getValues();
  var row_values = values[0];

  var mail = composeEndDateEmail(row_values);

  //Uncomment this line for testing
  //SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);

  MailApp.sendEmail(admin_email,mail.subject,mail.message);
}


function composeEndDateEmail(row_values)
{
  var first_name = row_values[0];

  var last_name = row_values[1];

  var email = row_values[2];

  var end_date = row_values [4];

  var message = "OFFBOARDING: "+end_date+" "+first_name+" "+last_name+
    " email "+email;
  var subject = "OFFBOARDING: "+end_date+" "+first_name+" "+last_name

  return({message:message,subject:subject});
}
//Call Compose End Date Trigger

function triggerOnEdit(e)
{
  sendEmailOnEndDate(e);
}

var admin_email='myemail@.gmail.com';

function sendTestEmail()
{
  MailApp.sendEmail(admin_email,'offboarding test email from script ',
'Offboarding test');

}

1 Ответ

1 голос
/ 04 марта 2020

Ваша цель может быть достигнута с помощью устанавливаемого триггера, который будет вызван действием on edit.

function onEditInst(e) {
  var range = e.range;
  if (range.getColumn() == 4)
    MailApp.sendEmail("mail@address.com", "Onboarding Email", "Column D has been edited");
  else if (range.getColumn() == 5) 
     MailApp.sendEmail("mail@address.com", "Offboarding Email", "Column E has been edited");
}

Приведенный выше фрагмент собирает отредактированный диапазон на листе и проверяет, является ли он D или столбец E. После этого на основании того, что электронное письмо отправляется - либо Onboarding, либо Offboarding.

Чтобы установить триггер просто go на триггеры текущего проекта и добавить триггер с параметрами ниже:

trigger settings

Ссылка

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