Поиск соответствия с циклом for Google App script

#javascript #for-loop #google-apps-script #google-sheets

#javascript #цикл for #google-apps-script #google-таблицы

Вопрос:

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

Я полагаю, что это проблема с циклом, хотя он завершается, я не регистрирую массив из logger.log.

Любая помощь очень ценится!

 `function searchEmail() {

var formOneSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
var lr = formOneSheet.getLastRow();
var formOneData = formOneSheet.getDataRange().getValues();
var col_to_search = 1;
var formOneRow = [];

for (var i = 0; i <= lr; i  ) {
  if(formOneData[0][col_to_search] === "abc@gmail.com"){

  return i;
  formOneRow.append(i);
  
  Logger.log(formOneRow);
  }}}`
  

Ответ №1:

  • Код после return i; не будет выполнен, поскольку функция завершается при return вызове.

  • Также в цикле for вы не используете i для перебора массива.

  • Поскольку индекс массива начинается с 0, вы не хотите включать длину массива в качестве верхнего предела в цикл for.

  • Вы хотите использовать push().

  • Я предполагаю, что вы хотите записать результирующий список после цикла for.

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

 function searchEmail() {

var formOneSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
var lr = formOneSheet.getLastRow();
var formOneData = formOneSheet.getDataRange().getValues();
var col_to_search = 1;
var formOneRow = [];

for (var i = 0; i < lr; i  ) {
  if(formOneData[i][col_to_search] === "abc@gmail.com"){
   formOneRow.push(formOneData[i][col_to_search]);
 }
 } 
   Logger.log(formOneRow)
 }
  

Комментарии:

1. Спасибо за ответ, Мариос, и метод имеет смысл, но он просто возвращает номер строки, где «abc@gmail.com » находится?

2. это великолепно, сейчас работает! Спасибо вам за вашу помощь!