Скрипт для сравнения количества столбцов на разных листах в электронной таблице со скриптами приложений - PullRequest
0 голосов
/ 19 июня 2020

у меня есть этот код:

    function ordenar1() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('DATOS'), true);
  spreadsheet.getActiveSheet().setFrozenRows(0);
  var sensoresintalados = spreadsheet.getRange("A1:A200").getNumColumns()
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  spreadsheet.getActiveSheet().sort(2, true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('smartsensor'))
  var numerosensores = sheet.getRange("B2:B200").getNumColumns() 
   if (sensoresintalados != numerosensores)
     Browser.msgBox('Actualiza la hoja de Smartsensor');
}

Я хочу показать сообщение, если количество столбцов другое, но оно не работает.

Я не знаю, проблема в условный или способ подсчета количества столбцов

1 Ответ

1 голос
/ 19 июня 2020

С помощью getNumColumns() вы запрашиваете, сколько столбцов находится внутри диапазона, который вы извлекаете с помощью getRange("A1:A200") ...

  • Очевидный ответ заключается в том, что этот диапазон содержит только 1 столбец
  • То же самое для диапазона "B2:B200"
  • Вместо этого вы хотите использовать метод getDataRange () , который автоматически определяет размерность диапазона, содержащего данные
  • Для электронная таблица, содержащая более одного листа, также важно применять методы getRange() или getDataRange() к листу, а не к электронной таблице, чтобы убедиться, что вы применяете правильный лист

В вашем случае:

  • Замените

    var sensoresintalados = spreadsheet.getRange("A1:A200").getNumColumns()

    на

    var sensoresintalados = spreadsheet.getActiveSheet().getDataRange().getNumColumns();

  • Замените

    var numerosensores = sheet.getRange("B2:B200").getNumColumns()

    на

    var numerosensores = sheet.getDataRange().getNumColumns();

...