Выделите ячейки курсивом - PullRequest
0 голосов
/ 17 июня 2020

Я создал вкладку в строке меню для хранения моей функции расписания. Это предназначено для выделения ячеек с выделенным курсивом текстом ярко-желтым цветом. Когда я запускаю приведенный ниже сценарий, я получаю сообщение об ошибке: Исключение: начальный столбец диапазона слишком мал.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu("Scheduling");
  menu.addItem("Schedule","schedule");
  menu.addToUi();
}

function schedule() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CANVAS");
  var col = ss.getLastColumn();
  var row = ss.getLastRow();
  for (var i = 1; i <= col; i++) {
    for (var j = 1; j <= row; i++) {
      if (ss.getRange(i,j).getFontStyle() == "italic") {
        ss.getRange(i,j).setBackground("#fff2cc");
        j = j+1;
      } else {
        j = j+1;
      }
      i = i+1;
      j = 0;
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

У вас есть несколько ошибок в том, как вы строите свой l oop. Посмотрите комментарии к следующему коду:

function schedule() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CANVAS");
  var col = ss.getLastColumn();
  var row = ss.getLastRow();
  // For each column
  for (var i = 1; i <= col; i++) {
    // Loop through the rows
    for (var j = 1; j <= row; j++) {  // Error! i++ should be j++.
      // Check font-style
      if (ss.getRange(i,j).getFontStyle() == "italic") {
        // If italic, color the background
        ss.getRange(i,j).setBackground("#fff2cc"); 
        /* The following makes no sense here... If all you are verifying 
is the italic condition, then let the loop finish and j will be incremented */
        // j = j+1;
      } 
    }
  }
}
0 голосов
/ 18 июня 2020

Попробуйте так:

function schedule() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CANVAS");
  var col = ss.getLastColumn();
  var row = ss.getLastRow();
  //reversed row and col end points from your code
  for (var i = 1; i <= row; i++) {
    for (var j = 1; j <= col; i++) {
      if (ss.getRange(i,j).getFontStyle() == "italic") {
        ss.getRange(i,j).setBackground("#fff2cc");
        j = j+1;
      } else {
        j = j+1;
      }
      i = i+1;
      j = 0;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...