Пустой лист Google, вызывающий ошибку: Исключение: количество столбцов в диапазоне должно быть не менее 1

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