Как исправить пустые поля в поиске электронной почты в скрипте Google Apps - PullRequest
2 голосов
/ 02 июля 2019

Я настраиваю систему ротации электронных таблиц. Я нашел в Интернете какой-то сценарий, который, казалось бы, соответствовал большинству моих потребностей здесь

Вот лист, который я использую (с фиктивными данными) - здесь

Однако, настроив его для работы с форматом и разметкой, я обнаружил, что он плохо работает с пустыми ячейками.

Я пытался использовать оператор if, но ему это не нравится - синтаксическая ошибка (из раздела "e-mailaddress =".

 emailAddress=if(getEmailFromName(row[1])!="") {getEmailFromName(row[1]) + ",";} else{"";}

Это текущий код, который я использую для отправки электронных писем. Есть отдельная функция, которая ищет адреса электронной почты.

        // Send an email to the first person

      emailAddress=getEmailFromName(row[1]) + "," +

                      getEmailFromName(row[2]) + "," +

                      getEmailFromName(row[3]) + "," +

                      getEmailFromName(row[4]);


        MailApp.sendEmail(emailAddress, subject, message);



  // to use this function, don’t put anything in the first column (A) or row (1).

  // Put the name (i.e. the key, or what we’re looking for) in column B.

  // Put what we want to return in column C. 



  var columnToSearch = 1; //column B



  // Set the active sheet to our email lookup

  var ss1 = SpreadsheetApp.getActiveSpreadsheet();

  var sh1 = ss1.getSheetByName("EmailContactList")

  ss1.setActiveSheet(sh1);



  var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();



  var line = -1;

  for( var i = 0; i < data.length; i++ ) {

    if( data[i][columnToSearch] == sKey ) {

      line = i;

      break;

    }

  }



  if( line != -1 ) {

    //do what you want with the data on "line"

    return data[line][2]; //value on column C of the matched line

  } else {

  return "";

  // if criteria is not found

  }

}

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

1 Ответ

0 голосов
/ 02 июля 2019

Предполагая, что адреса электронной почты находятся в столбцах с 1 по 4, и некоторые из них могут быть пустыми:

for (var x = 1; x < 5; x++) { // 5 because emails are till col4

    var emailAddress = []; // Start by collecting the non-blank emails in an array

    if (getEmailFromName(row[1]) != "") {

      emailAddress.push(getEmailFromName(row[x]))

    }

  }

  emailAddress = emailAddress.join();  // Join the array to get a comma separated string

  MailApp.sendEmail(emailAddress, subject, message);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...