Добавление новых строк изменяет ячейки диапазона в Google Таблицах, пропускает новую строку

Исходный вопрос был здесь и имел ответ, который, как мне казалось, работал: Условное форматирование Google Таблиц изменяется при добавлении новых строк

Но через месяц или около того я все еще сталкиваюсь с проблемой условного форматирования, меняющей значения в «Range:», когда я добавляю новую строку. Например, если мое форматирование предназначено для всего столбца B, а затем я добавляю строку в строку 35, условное форматирование теперь имеет диапазон B1: B34, а строка 35 не имеет форматирования.

Решением было поместить этот код в редактор скриптов Google Sheet.

function formatRange(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Sheet1");
    var range = sheet.getRange("A1");
 range.copyFormatToRange(sheet,1,sheet.getLastColumn(),1,sheet.getLastRow())
}

Опять же, каждый раз, когда на лист добавляется новая строка, информация о диапазоне условного форматирования изменяется и пропускает новую строку.


person Chris    schedule 17.03.2015    source источник
comment
Если бы вы отформатировали весь столбец, это сработало бы для вас? Или есть форматирование и / или данные под текущими данными с другим форматированием?   -  person Alan Wells    schedule 18.03.2015
comment
условное форматирование предназначено для Excel. Для таблиц Google используйте gs-conditional-formatting.   -  person Rubén    schedule 16.02.2016
comment
Не имея возможности прокомментировать ответ Рубена, я хотел бы указать, что это не сработает, если вы выберете вставку ячейки, а не строк. Вставка строки разбивает диапазон высотой столбца на два разных диапазона выше и ниже точки вставки.   -  person Stampeder    schedule 26.04.2017


Ответы (2)


Если форматирование и весь столбец возможно, это можно сделать с помощью кода:

function columnBackground() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var range = sheet.getRange("B:B");
  range.setBackground("red");
}

Приведенный выше код форматирует фон всего столбца B красным цветом.

person Alan Wells    schedule 17.03.2015
comment
Поэтому я поместил условное форматирование в строку номер 2 для всех столбцов, потому что разные столбцы имеют разные правила. Фактический код в редакторе сценариев: function formatRange(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("FILES"); var range = sheet.getRange("A2:R2"); range.copyFormatToRange(sheet,1,sheet.getLastColumn(),1,sheet.getLastRow()) } Потому что я думал, что это захватит любые правила из A2, B2, C2 и т.д. в R2, а затем сохранит их формат. Но опять же, каждый раз, когда добавляется новая строка, значения меняются. - person Chris; 24.03.2015

Короткий ответ

Установите правило условного форматирования для всего столбца вместо того, чтобы устанавливать условное форматирование ячейки за ячейкой.

Объяснение

В настройке «Применить к диапазону» диапазон должен иметь вид B1:B1001, поэтому каждый раз, когда вы вставляете строку между B1 и B1001, правило условного форматирования будет включать новую строку.

Примечание. Если вы используете B1:B, он будет автоматически изменен, чтобы установить последнюю ячейку на ячейку, соответствующую последней строке в электронной таблице.

person Rubén    schedule 16.02.2016
comment
Хорошо, позволь мне попробовать. Кажется нелогичным, не так ли? :) Кажется, что B1: B будет включать каждую добавленную строку, но позвольте мне попробовать ваше решение. Спасибо! - person Chris; 01.03.2016