Отправить письмо, если значение ячеек ниже определенного значения - PullRequest
0 голосов
/ 14 октября 2018

Я абсолютно новичок в этом и пытаюсь сделать сценарий для работы.Мне нужно ежедневно проверять сертификаты сотрудников и, если они истекли, проводить их повторную сертификацию.Вот таблица «тестирования» со случайными данными: https://docs.google.com/spreadsheets/d/1vJ8ms5ZLqmnv4N1upNHD4SRfgIgIbEAAndvUNy-s9S4/edit?usp=sharing

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

Что я пытаюсь достичь, это написать скрипт, который проверяет все числа в C3: G24 .Если какая-либо ячейка в этом диапазоне имеет значение меньше 15, она должна извлечь номер и имя значка из той же строки, а также «дни», на которые действительны их сертификаты, и отправить электронное письмо, содержащее все эти данные.

Например,

Тема: Сертификаты, срок действия которых истекает

Содержимое электронной почты: Сертификат вашего сотрудника (имя из столбца B) со значком № (№ из столбца A) будетистекает через X дней (где X = число из диапазона C3: G24).

До сих пор моей лучшей попыткой было, по крайней мере, заставить его отправить ЛЮБОЕ электронное письмо при редактировании, но безуспешно пытаясь адаптировать любой скриптнашел в интернете.Вот что сработало, чтобы хотя бы отправить электронное письмо, но затем я сделал что-то, чтобы сломать его:

function checkValue()
{
  var ss = SpreadsheetApp.getActive();//not sure if needed, the spreadsheet eventually doesn't have to be open/active
  var sheet = ss.getSheetByName("Certifications");

  //not sure if this is ok
  var valueToCheck = sheet.getRange("C3:G24").getValue();

  //Here I'd like to change the "days" based on needs
  if(valueToCheck < 15)
  {
    MailApp.sendEmail("email@company.com","Certifications","Your employee certification will expire soon" + valueToCheck+ ".");
  }
}

Может кто-нибудь помочь мне направить меня в правильном направлении?

1 Ответ

0 голосов
/ 14 октября 2018

вот что я хотел бы сделать:

function checkValue()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Certifications");
  var valueToCheck = sheet.getDataRange().getValues();
  var resultValues = [];
  valueToCheck = valueToCheck.filter(function(element){
    var val = 0
    if (parseInt(element[2]) < 15)
    {
      resultValues.push({col: "Cert1", value: element[2]})
      return (true);
    }
    else if (parseInt(element[3]) < 15)
    {
      resultValues.push({col: "Cert2", value: element[3]})
      return (true);
    }
    else if (parseInt(element[4]) < 15)
    {
      resultValues.push({col: "Cert3", value: element[4]})
      return (true);
    }
    else if (parseInt(element[5]) < 15)
    {
      resultValues.push({col: "Cert4", value: element[5]})
      return (true);
    }
    else if (parseInt(element[6]) < 15)
    {
      resultValues.push({col: "Cert5", value: element[6]})
      return (true);
    }
  })
  for(var i = 0; i < valueToCheck.length; i++)
  {
    MailApp.sendEmail("mail@company.com","Certifications","your employee's " + valueToCheck[i][1] + "with badge " + valueToCheck[i][0]  + " certification will expire in " + resultValues[i].value + " days (column " + resultValues[i].col + ").");
  }
}
  1. использовать функцию getValues() для извлечения данных.
  2. затем отфильтровать значения, основываясь на условии значения меньше15
  3. одновременно захватывает имя столбца и данные меньше 15.
  4. анализирует оба массива для отправки данных на вашу почту
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...