#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
}
}