Как отправить условное уведомление по электронной почте на листе Google? - PullRequest
1 голос
/ 29 апреля 2019

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

То, что я уже сделал, - это получение электронного письма для одного значения ячейки, но я хочу получить его для всего столбца или числа значений столбца.

 function CheckSales() {
  // Fetch the values
  var domainexpireRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("domain list").getRange("F2"); 
  var domainexpire = domainexpireRange.getValues();

  // Check domain expiring
  if ( domainexpire < 2){
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Company emails").getRange("B2:B4");
    var emailAddress = emailRange.getValues();

    // Send Alert Email.
    var message = '2019 smtp Domain Expiring in two days. Please check the sheet domain sheet '; // Second column
    var subject = '2019 smtp Domain Expiring';
    MailApp.sendEmail(emailAddress, subject, message);

  }
}

У меня есть лист с несколькими строками и столбцами, я хочу проверить столбец F и, если любое значение в столбце F меньше 2, отправить электронное письмо с предупреждением на мои адреса электронной почты. Мой код работает нормально, если я копирую, вставляю код несколько раз и меняю "getRange (" F2 ");" на F2, F3, .... F100. Но это не очень хороший способ создать код. Может кто-нибудь сказать мне, если я могу отредактировать некоторый код и получить результат.

Я пытался использовать "getRange (" F2: F ");" & getRange ("F2: F54"); но это не сработало.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Попробуйте использовать оператор for для циклического перемещения по всему листу, приведенный ниже должен работать:

function checkSales() {

  // Fetch the values    
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName("domain list");
  var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();

  // loop through each row starting at row 2
  for (var i = 1; i < data.length; i++) {
    var domainExpire = data[i][5];

    // Check domain expiring
    if (domainExpire < 2) {
      var emailRange = spreadsheet.getSheetByName("Company emails").getRange("B2:B4");
      var emailAddress = emailRange.getValues();

      // Send Alert Email.
      var message = '2019 smtp Domain Expiring in two days. Please check the sheet domain sheet '; // Second column
      var subject = '2019 smtp Domain Expiring';

      MailApp.sendEmail(emailAddress, subject, message); 
    }
  }
}
0 голосов
/ 29 апреля 2019

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

function CheckSales() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('domain list');
  var domainexpireRange=sh.getRange(1,6,sh.getLastRow()-1,1);
  var domainexpire=domainexpireRange.getValues();
  for(var i=0;i<domainexpire.length;i++) {
    // Check domain expiring
    if (domainexpire[i][5]<2){
      var emailRange=ss.getSheetByName("Company emails").getRange("B2:B4");
      var emailAddress=emailRange.getValues().map(function(r){return r[0];}).join(',');
      // Send Alert Email.
      var dateString=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy");
      var message=Utilities.formatString('%s smtp Domain Expiring in two days. Please check the sheet domain sheet.',dateString);
      var subject=Utilities.formatString('%s smtp Domain Expiring',dateString);
      MailApp.sendEmail(emailAddress, subject, message);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...