Проблема, если строка содержит подстроку

#javascript #google-apps-script #google-sheets

Вопрос:

Я хочу проверить, есть ли подстрока в строке.

Строка взята из 12 — й строки листа Google. Подстрока берется из HTML — формы, в которую пользователь вставляет данные. (В приведенном ниже примере это простая строка, и она все еще не работает. Проблема не в вставленных данных.)

Я хочу отобразить номер строки строки при обнаружении подстроки.

 for (var i=0; i < sheetDataRange.getValues().length; i  ) {
  if (sheetDataRange.getValues()[i][11].includes("I14")) { // The string value is okay
    SpreadsheetApp.getUi().alert(i 5); // The data starts at the 5th row
  }
}
 

Я попытался решить проблему с помощью функции includes ().
Проблема в том, что некоторые строки без «I14» отображаются, а другие с ним-нет.
Я тоже пытался использовать функцию match (), но она не работает.

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

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

1. Вы уверены, что sheetDataRange начинается с строки 5?

2. Строка берется из 12-й строки , но getValues()[i][11 является 12-м столбцом , а не строкой. И на самом деле вы используете ужасно неправильный метод getValues() . Попробуйте решение @Cooper.

3. фанкайзер, да, уверен в этом. Проблема в состоянии. Юрий, я употребил не то слово. Строка берется откуда-то из 12-го столбца. Не ссориться

Ответ №1:

Вам нужно получить значения() только один раз, а не каждый раз, когда вы проходите цикл

 const values = sheetDataRange.getValues();
const ui = SpreadsheetApp.getUi();
for (var i=0; i < values.length; i  ) {
  if (values[i][11].toString().includes("I14")) { 
    ui.alert(i 5); // The data starts at the 5th row
  }
}