Установите границы в диапазон, если первая ячейка в строке не пуста - PullRequest
0 голосов
/ 05 июня 2019

Мне нужно установить границы для диапазона в строке, если первая ячейка в этой строке не пуста.

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

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var sheetmon = ss.getSheetByName('Monitor'); 
  var rows = sheetmon.getRange('G59:P90'); 
  var numRows = rows.getNumRows(); 
  var values = rows.getValues(); 
  var testvalues = sheetmon.getRange('G59:G90').getValues(); 

  rows.setBorder(false, false, false, false, false, false, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM); 

  for (var i = 0; i <= numRows - 1; i++) {
      var n = i + 1;
      if (testvalues[i] > 0) { 
        sheetmon.getRange('a' + n + ':g' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM); 
      }
  }
}

Но он работает только для первойряд в диапазоне G59: G90

Где я не прав?

Ответы [ 2 ]

1 голос
/ 06 июня 2019

testvalues ​​- это двумерный массив. Так что это

if (testvalues[i] > 0) { 
        sheetmon.getRange('a' + n + ':g' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM); 
      }

должно быть примерно так:

if (testvalues[i][0] > 0) { 
        sheetmon.getRange('a' + n + ':g' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM); 
      }
0 голосов
/ 06 июня 2019

Если вы хотите установить границы в той же строке, которая оценивается в цикле, вы должны изменить значение n, чтобы всегда было на 59 больше, чем i.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetmon = ss.getSheetByName('Monitor'); 
  var rows = sheetmon.getRange('G59:P90'); 
  var numRows = rows.getNumRows(); 
  var values = rows.getValues(); 
  var testvalues = sheetmon.getRange('G59:G90').getValues(); 

  rows.setBorder(false, false, false, false, false, false, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM); 

  for (var i = 0; i <= numRows - 1; i++) {
      var n = i + 59;
      Logger.log(testvalues[i] > 0);
      if (testvalues[i] > 0) {
        Logger.log(testvalues[i]);
        sheetmon.getRange('A' + n + ':G' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM); 
      }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...