Скрипт условного форматирования Google Spreadsheet

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

Я хочу, чтобы ячейка A2 изменилась на Зеленый, если ячейка O2 имеет значение «X». и это будет сделано на обеих колонках до конца. Я знаю, что это потребует сценария.

Я столкнулся с ссылкой, которая похожа, но я не знаю, как настроить ее в соответствии с моими потребностями. Это то, что можно сделать?

Ссылка на сайт:https://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting

Ответы на вопрос(3)

Вместо этого в условном форматировании выберите параметр «Пользовательская формула» и введите значение, подобное=O2="X" - или действительно любое выражение, которое возвращает логическое значение true / false.

Из того, что я могу сказать, ссылки, перечисленные в этих пользовательских сценариях, немного странные и применяются следующим образом ...

Если это ячейка в выбранном вами диапазоне, то она изменяется на «ячейку, которая подсвечивается».

Если это ячейка за пределами выбранного диапазона, то она изменяется на «эту позицию» плюс смещение, равное смещению от текущей ячейки к верхнему левому углу выбранного диапазона ».

То есть, если ваш диапазон былA1:B2тогда вышеупомянутое будет таким же, как установка индивидуального форматирования для каждой ячейки следующим образом:

A1 =O2="X"
A2 =O3="X"
B1 =P2="X"
B2 =P3="X"

Вы также можете указать фиксированные ссылки, такие как=$O$2="X" - который проверит определенную ячейку O2 для всех ячеек в выбранном вами диапазоне.

Решение Вопроса

который вы могли бы использовать, чтобы сделать то, что вы описали:

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');
    }
  }
}
 PY_23 мая 2012 г., 18:55
Это работает отлично. Я добавил еще одну строку, поэтому, если ячейка пуста, она снова становится белой.
 31 дек. 2014 г., 11:49
@Jan Kleinert Точно, ваш сценарий все еще должен быть запущен. Прослушиватель редактирования можно добавить только для всего листа, но не для диапазона ячеек (что может привести к снижению производительности). Google Spreadsheet поддерживает условное форматирование из коробки. Вопрос был в том, как получить ту же функциональность через скрипт.
 17 авг. 2013 г., 23:24
Как вы используете этот скрипт, когда он написан?
 10 сент. 2013 г., 18:41
@DanielWilliams После сохранения сценария в редакторе сценариев вы можете запустить его несколькими способами. Самое простое - нажать кнопку «Выполнить» в редакторе скриптов (выглядит как кнопка треугольника / воспроизведения).developers.google.com/apps-script/execution_script_editor

(Feb 2017) Как уже упоминалось в другом ответе, Google Sheets теперь позволяет пользователям добавлятьУсловное форматирование непосредственно из пользовательского интерфейса, будь то на настольном компьютере / ноутбуке, устройствах Android или iOS.

Точно так же сAPI Листов Google v4 (и новее), разработчики теперь могут писать приложения, соответствующие правилам условного форматирования CRUD. Проверьтеруководство а такжеобразцы страницы для более подробной информации, а такжесправочные документы (ищи{add,update,delete}ConditionalFormatRule). Руководство содержит этот фрагмент кода Python (при условии, что идентификатор файлаSHEET_ID а такжеSHEETS в качестве конечной точки службы API):

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 & amp; хочу видеть чуть дольше, более общий "реальный мир" примеры использования API, я создал различные видео & amp; связанные сообщения в блоге:

Migrating SQL data to a Sheet plus code deep dive post Formatting text using the Sheets API plus code deep dive post Generating slides from spreadsheet data plus code deep dive post

Как вы можете сказать, API Sheets в первую очередь дляdocument-ориентированная функциональность, как описано выше, но для выполненияfile-уровневый доступ, такой как загрузка & amp; загрузки, импорт и экспорта (так же, как загрузки и загрузки, но преобразование в / из различных форматов), используйтеGoogle Drive API вместо. Примеры использования Drive API:

Exporting a Google Sheet as CSV (blog post only) "Poor man's plain text to PDF" converter (blog post only) (*)

(*) - TL; DR: загрузить простой текстовый файл на диск, импортировать / преобразовать в формат Google Docs, а затем экспортировать этот документ в PDF. Пост выше использует Drive API v2; этотпоследующий пост описывает его миграцию на Drive API v3, а здесьвидео объединение обоих «преобразователей для бедняков»; сообщения.

Ваш ответ на вопрос