Проверьте, соответствует ли любая ячейка в указанном диапазоне 2 условиям - PullRequest
1 голос
/ 16 октября 2019

Я собираю макрос, который отправляет электронные письма с предупреждениями, если выполняются два условия.

Электронные письма отправляются, но без разбора, а не только когда выполняются условия, которые я хочу установитьвстретил. Условия: отправьте электронное письмо , если любая ячейка внутри диапазона (I1: I9999) имеет белый цвет в качестве фона И содержит текст «QC». Это то, что я пробовал:

 var QCJobRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("I1:I9999"); 
  var Location = QCJobRange.getValue();

  // Check for white cells with value=QC in Location column

  if (Location = "QC") and (Background = "#ffffff");

// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("C2");
var emailAddress = emailRange.getValues();

// Send Alert Email.
var message = 'bla';
var subject = 'bla';
MailApp.sendEmail(emailAddress, subject, message);

Я работаю прямо в редакторе сценариев, который вы можете открыть из листов Google. Кажется, что некоторые операторы не выбираются, например, "и" даже не подсвечиваются, и я получаю следующее сообщение об ошибке: "и" не определено .

Я былпрочесываю форумы для простого решения, но я застрял на проблеме с "и". Есть предложения?

1 Ответ

0 голосов
/ 16 октября 2019

Google Apps Script основан на Javascript

  • Синтаксис "и": &&
  • Синтаксис дляif оператор if(condition1&&condition2){...do something...};
  • Метод getValue() применим к одному значению (из одной ячейки), тогда как getValues()для использования в диапазонах значений, которые представляют собой двумерные массивы
  • Если вы хотите сравнить два значения, используйте оператор ==

Вот пример для изменения вашего кодаЧтобы отправить сообщение, если фон ячейки «I1» имеет белый цвет и значение «QC»:

function myFunction() {
  //if you do not have 999 rows full of data, please reduce your range - otherwise your code will be slow
   var QCJobRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("I1:I9999"); 
   var Locations = QCJobRange.getValues();
   var firstLocation=Locations[0][0];
  // Check for white cells with value=QC in Location column
  if (firstLocation == "QC"&& QCJobRange.getBackgrounds()[0][0]== "#ffffff"){
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WIP").getRange("C2");
    var emailAddress = emailRange.getValue();
    // Send Alert Email.
    var message = 'bla';
    var subject = 'bla';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

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

...