#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. это великолепно, сейчас работает! Спасибо вам за вашу помощь!