Условное форматирование таблицы Google script
Я пытаюсь выяснить, как использовать условное форматирование в электронной таблице google, аналогично тому, что вы можете сделать в excel с помощью формулы.
Я хочу, чтобы ячейка A2 изменилась на зеленый, если ячейка O2 имеет значение "X", и это будет выполняться в обоих столбцах до конца. Я знаю, что для этого потребуется script.
Я наткнулся на ссылку, которая похожа, но я не знаю, как ее настроить для удовлетворения моих потребностей. Это что-то, что можно сделать?
Ссылка: https://webapps.stackexchange.com/info/16745/google-spreadsheets-conditional-formatting
Ответы
Ответ 1
Здесь script вы можете использовать, чтобы описать:
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var columnO = sheet.getRange(2, 15, sheet.getLastRow()-1, 1);
var oValues = columnO.getValues();
for (var i = 0; i < oValues.length; i++) {
if (oValues[i][0] == 'X') {
sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green');
}
}
}
Ответ 2
В новых листах Google это больше не требует script.
Вместо этого в условном форматировании выберите опцию "настраиваемая формула" и введите значение, подобное =O2="X"
- или действительно любое выражение, которое возвращает логическое значение true/false.
Из того, что я могу сказать, ссылки, перечисленные в этих настраиваемых сценариях, немного странны и применяются следующим образом...
Если это ячейка в пределах выбранного вами диапазона, то она изменяется на "ячейку, которая подсвечивается".
Если это ячейка за пределами выбранного диапазона, то она изменилась на "эта позиция плюс смещение, то же самое, что и смещение от текущей ячейки в верхнем левом углу выбранного диапазона".
То есть, если ваш диапазон был A1:B2
, то приведенное выше будет таким же, как установка индивидуального форматирования в каждой ячейке следующим образом:
A1 =O2="X"
A2 =O3="X"
B1 =P2="X"
B2 =P3="X"
Вы также можете указать фиксированные ссылки, например =$O$2="X"
-, которые будут проверять конкретную ячейку O2 для всех ячеек в выбранном диапазоне.
Ответ 3
(Февраль 2017 г.) Как уже упоминалось в другом ответе, Google Sheets теперь позволяет пользователям добавлять условное форматирование непосредственно из пользовательского интерфейса, будь то на настольном компьютере/ноутбуке, устройствах Android или iOS.
Аналогичным образом, с помощью Google Sheets API v4 (и новее) разработчики теперь могут создавать приложения с правилами условного форматирования CRUD. Посетите руководство и образцы страниц для получения более подробной информации, а также справочные документы (поиск {add,update,delete}ConditionalFormatRule
). В этом руководстве приведен фрагмент кода Python (в качестве конечной точки службы API указан идентификатор файла SHEET_ID
и SHEETS
):
myRange = {
'sheetId': 0,
'startRowIndex': 1,
'endRowIndex': 11,
'startColumnIndex': 0,
'endColumnIndex': 4,
}
reqs = [
{'addConditionalFormatRule': {
'index': 0,
'rule': {
'ranges': [ myRange ],
'booleanRule': {
'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
'condition': {
'type': 'CUSTOM_FORMULA',
'values':
[{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
},
},
},
}},
{'addConditionalFormatRule': {
'index': 0,
'rule': {
'ranges': [ myRange ],
'booleanRule': {
'format': {
'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
},
'condition': {
'type': 'CUSTOM_FORMULA',
'values':
[{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
},
},
},
}},
]
SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
body={'requests': reqs}).execute()
В дополнение к Python API Google поддерживают множество языков, поэтому у вас есть варианты. В любом случае, этот пример кода форматирует лист (см. изображение ниже) таким образом, чтобы те, кто моложе среднего возраста, были выделены светло-красным цветом, а данные старше среднего имеют данные, окрашенные красным шрифтом.
![Conditional formatting example]()
ОБЪЯВЛЕНИЕ ОБЩЕСТВЕННОЙ СЛУЖБЫ
Последний API Sheets предоставляет функции, недоступные в более ранних версиях, а именно предоставляет разработчикам программный доступ к Sheet, как если бы вы использовали пользовательский интерфейс (условное форматирование [!], Фиксированные строки, форматирование ячеек, изменение размеров строк/столбцов, добавление сводных таблиц, создание диаграмм и т.д.).
Если вы новичок в API & Хочу увидеть чуть более длинные, более общие "реальные" примеры использования API, я создал различные видео и похожие посты в блоге:
Как вы можете заметить, API Sheets в первую очередь предназначен для функциональности документа -oriented, как описано выше, но для выполнения доступа к файлу -level, например для выгрузки и загрузки; загрузки, импорт и экспортировать (аналогично загрузке и загрузке, но конвертировать в/из различных форматов), вместо этого используйте Google Drive API. Примеры использования Drive API:
- Экспорт листа Google в формате CSV (только для блога)
- Конвертер "Простой человек в PDF" (пост в блоге только) (*)
(*) - TL; DR: загрузить простой текстовый файл на диск, импортировать/преобразовать в формат Google Docs, а затем экспортировать этот документ в PDF. Пост выше использует Drive API v2; В этом последующем посте описывается его миграция на Drive API v3, а здесь видео, объединяющее оба поста "Бедный конвертер".
Ответ 4
С помощью новейшего Sheet API вы можете программно добавить правило условного форматирования на лист, чтобы сделать выделение.
Вы можете добавить правило настраиваемой формулы, которое установит зеленый цвет фона в столбце A, где столбец O - "X", например:
function applyConditionalFormatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var numRows = sheet.getLastRow();
var rangeToHighlight = sheet.getRange("A2:A" + numRows);
var rule = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied('=INDIRECT("R[0]C[14]", FALSE)="X"')
.setBackground("green")
.setRanges([rangeToHighlight])
.build();
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);
}
Диапазон, к которому применяется условное форматирование, - это столбец A от строки 2 до последней строки на листе.
Пользовательская формула:
=INDIRECT("R[0]C[14]", FALSE)="X"
что означает переход на 14 столбцов справа от выбранного столбца диапазона и проверку его значения "X".
Столбец O - это 14 столбцов справа от столбца A.