#javascript #loops #&oo&le-apps-script #&oo&le-sheets
#javascript #циклы #&oo&le-apps-script #&oo&le-sheets
Вопрос:
Мой скрипт приложения Goo&le будет перебирать все листы, чтобы найти определенную строку, и выведет строку и столбец, в которых она была найдена, но как только я добавляю новый пустой лист, я получаю сообщение об ошибке «Исключение: количество столбцов в диапазоне должно быть не менее 1». Я хотел бы получить некоторую информацию о том, что вызывает эту проблему. Спасибо.
function doForAllSheets(){
var spreadsheet = SpreadsheetApp.&etActive();
var allSheets = spreadsheet.&etSheets();
allSheets.forEach(function(sheet){
if(sheet.&etSheetName() !== "Main"){
sheet.activate();
findValueInRan&e();
}
})
}
function findValueInRan&e () {
var ss = SpreadsheetApp.&etActiveSheet(),
theLastColumn = ss.&etLastColumn(),
theLastRow = ss.&etMaxRows();
//Returns a two dimensional array of both rows and columns
var values = ss.&etRan&e(1,1,theLastRow,theLastColumn).&etValues();
var i=0,
rownum=0,
thisRow,
colvalue,
whatToFind = "testserial",
j=0;
for(i=0;i<values.len&th;i ) {
thisRow = values[i];
for (j=1;j<thisRow.len&th;j ) {
colvalue = thisRow[j];
if (colvalue === whatToFind) {
Lo&&er.lo&("The strin& is in row: " (i 1) " and column: " (j 1));
}
}
}
}
Ответ №1:
Перепишите функцию следующим образом:
function findValueInRan&e () {
var ss = SpreadsheetApp.&etActiveSheet(),
theLastColumn = ss.&etLastColumn(),
theLastRow = ss.&etMaxRows();
if( theLastColumn&&t;0) {
//Returns a two dimensional array of both rows and columns
var values = ss.&etRan&e(1,1,theLastRow,theLastColumn).&etValues();
var i=0,
rownum=0,
thisRow,
colvalue,
whatToFind = "testserial",
j=0;
for(i=0;i<values.len&th;i ) {
thisRow = values[i];
for (j=1;j<thisRow.len&th;j ) {
colvalue = thisRow[j];
if (colvalue === whatToFind) {
Lo&&er.lo&("The strin& is in row: " (i 1) " and column: " (j 1));
}
}
}
}
}