Как пометить ячейку в каждой строке каждый раз при отправке электронного письма - PullRequest
2 голосов
/ 29 января 2020

Я ищу способ пометить ячейку, если письмо отправлено с листа Google. Например, если электронное письмо отправлено, в столбце P будет указано «электронное письмо отправлено» в этой строке или что-то в этом роде. Я довольно новичок в этом, я нашел несколько полезных похожих вопросов, но я просто не знаю, как их настроить. Я думаю, что мне нужно использовать команду IF, но я не знаю, как и где ее установить

function SendStudentEmails() {

  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Homework Hour").activate();//use name of active sheet

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();

  var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DO NOT DELETE! Parent Email Template").getRange(1, 1).getValue();

  var quotaLeft = MailApp.getRemainingDailyQuota();

  if((lr-1) > quotaLeft) {
    Browser.msgBox("You have " + quotaLeft + " left and you're trying to send" (lr-1) + " emails. Emails were not sent")
  } else {

    for (var i = 2;i<=lr;i++){  

    var currentEmail = ss.getRange(i,14).getValue(); // 15 is the email column        
    var currentStudent = ss.getRange(i, 4).getValue(); // 4 is student name column
    var currentMessage = ss.getRange(i, 2).getValue(); // 2 is the message column
    var currentMissingAssingment = ss.getRange(i, 9).getValue(); // 9 is the missing assingment column

    var massageBody = templateText.replace("<<Student Name>>",currentStudent).replace("<<Message>>",currentMessage).replace("<<Missing Assingment>>",currentMissingAssingment);
    var subjectLine = currentStudent +" Has Homework Hour"; 


   if (currentEmail.trim() !== '')// checks if email is not blank  
   MailApp.sendEmail(currentEmail, currentStudent, massageBody); 

  } 

 }

}

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Я новичок в ответе, но я надеюсь, что это поможет вам! Похоже, вы хотите отметить рядом с каждой строкой отправленного электронного письма, и в этом случае у вас уже есть настройка if / for для этого (за исключением того, что у вас, по-видимому, отсутствует один набор скобок). для последнего теста if, как показано ниже). Вы можете просто добавить любой текст в колонку P в строке после отправки электронного письма. Вот тот фрагмент кода с добавленной частью для добавления текста в столбец P:

if (currentEmail.trim() !== '')// checks if email is not blank {  
   MailApp.sendEmail(currentEmail, currentStudent, massageBody); 
   ss.getRange(i,16).setValue("email sent") // writes text (email sent) into column P (col 16), row i (the current row in the for loop)
    }
  } 
1 голос
/ 30 января 2020

Вы также можете использовать setBackground("color"), если хотите изменить цвет фона своей ячейки.

Вот небольшой пример:

ss.getRange(5, 15).setBackground("green") - цвет фона изменится на зеленый в ячейке N5

Вот как это выглядит в вашем фрагменте (ниже MailApp, триггер setBackground после того, как MailApp сделает работу):

function SendStudentEmails() {

    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Homework Hour").activate();

    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var lastRow = ss.getLastRow();
    var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DO NOT DELETE! Parent Email Template").getRange(1, 1).getValue();
    var quotaLeft = MailApp.getRemainingDailyQuota();

    if ((lastRow - 1) > quotaLeft) {

        Browser.msgBox("You have " + quotaLeft + " left and you're trying to send " + (lastRow - 1) + " emails. Emails were not sent")

    } else {

        for (var i = 2; i <= lastRow; i++) {

            var currentEmail = ss.getRange(i, 15).getValue(); // 15 is the email column        
            var currentStudent = ss.getRange(i, 4).getValue(); // 4 is student name column
            var currentMessage = ss.getRange(i, 2).getValue(); // 2 is the message column
            var currentMissingAssingment = ss.getRange(i, 9).getValue(); // 9 is the missing assingment column

            var massageBody = templateText.replace("<<Student Name>>", currentStudent).replace("<<Message>>", currentMessage).replace("<<Missing Assingment>>", currentMissingAssingment);
            var subjectLine = currentStudent + " Has Homework Hour";


            if (currentEmail.trim() !== '' && ss.getRange(i,15).getBackground !== 'green') { // checks if email is not blank  
                MailApp.sendEmail(currentEmail, currentStudent, massageBody);
                ss.getRange(i, 15).setBackground("green") // change cell background to green 

            }

        }

    }

}

Ссылка:

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