La API de Hojas de cálculo de Google te permite crear y actualizar las reglas de formato condicional en las hojas de cálculo. Solo algunos tipos de formato (negrita, cursiva, tachado, color de primer plano y color de fondo) se pueden controlar con el formato condicional. En los ejemplos de esta página, se muestra cómo realizar operaciones comunes de formato condicional con la API de Hojas de cálculo.
Estos ejemplos se presentan en forma de solicitudes HTTP para que tengan lenguaje neutro. Si quieres obtener información sobre cómo implementar una actualización por lotes en diferentes lenguajes con las bibliotecas cliente de la API de Google, consulta Cómo actualizar las hojas de cálculo.
En estos ejemplos, los marcadores de posición SPREADSHEET_ID y SHEET_ID indican dónde proporcionarías esos ID. Puedes encontrar el ID de la hoja de cálculo en la URL de la hoja de cálculo. Puedes obtener el ID de la hoja con el método spreadsheets.get
. Los rangos se especifican con la notación A1. Un rango de ejemplo es Sheet1!A1:D5.
Agregar un gradiente de color condicional en una fila
En la siguiente muestra de código de spreadsheets.batchUpdate
, se indica cómo usar AddConditionalFormatRuleRequest
para establecer nuevas reglas de formato condicional de gradientes para las filas 10 y 11 de una hoja. La primera regla establece que las celdas en esa fila tienen los colores de fondo establecidos según su valor. El valor más bajo de la fila es de color rojo oscuro, mientras que el valor más alto es de color verde brillante. El color de los demás valores se interpola. La segunda regla hace lo mismo, pero con valores numéricos específicos que determinan los extremos del gradiente (y los diferentes colores).
A continuación, se muestra el protocolo de solicitud.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 9, "endRowIndex": 10, } ], "gradientRule": { "minpoint": { "color": { "green": 0.2, "red": 0.8 }, "type": "MIN" }, "maxpoint": { "color": { "green": 0.9 }, "type": "MAX" }, } }, "index": 0 } }, { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 10, "endRowIndex": 11, } ], "gradientRule": { "minpoint": { "color": { "green": 0.8, "red": 0.8 }, "type": "NUMBER", "value": "0" }, "maxpoint": { "color": { "blue": 0.9, "green": 0.5, "red": 0.5 }, "type": "NUMBER", "value": "256" }, } }, "index": 1 } }, ] }
Después de la solicitud, la regla de formato aplicada actualiza la hoja. Dado que el punto máximo del gradiente de la fila 11 se estableció en 256
, cualquier valor por encima de él tendrá el color de punto máximo:
Cómo agregar una regla de formato condicional a un conjunto de rangos
En la siguiente muestra de código de spreadsheets.batchUpdate
, se indica cómo usar AddConditionalFormatRuleRequest
para establecer una nueva regla de formato condicional en las columnas A y C de una hoja.
La regla establece que el color de fondo de las celdas con valores de 10 o menos cambiará a rojo oscuro. La regla se inserta en el índice 0, por lo que tiene prioridad sobre otras reglas de formato.
A continuación, se muestra el protocolo de solicitud.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startColumnIndex": 0, "endColumnIndex": 1, }, { "sheetId": SHEET_ID, "startColumnIndex": 2, "endColumnIndex": 3, }, ], "booleanRule": { "condition": { "type": "NUMBER_LESS_THAN_EQ", "values": [ { "userEnteredValue": "10" } ] }, "format": { "backgroundColor": { "green": 0.2, "red": 0.8, } } } }, "index": 0 } } ] }
Después de la solicitud, la regla de formato aplicada actualiza la hoja:
Cómo agregar reglas de formato condicional de fecha y texto a un rango
En la siguiente muestra de código de spreadsheets.batchUpdate
, se indica cómo usar AddConditionalFormatRuleRequest
para establecer nuevas reglas de formato condicional para el rango A1:D5 de una hoja en función de los valores de fecha y texto de esas celdas. Si el texto contiene la string
“Cost” (no distingue mayúsculas de minúsculas), la primera regla establece el texto de la celda en negrita. Si la celda contiene una fecha anterior a la última semana, la segunda regla establecerá el texto de la celda en cursiva y le aplicará el color azul.
A continuación, se muestra el protocolo de solicitud.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4, } ], "booleanRule": { "condition": { "type": "TEXT_CONTAINS", "values": [ { "userEnteredValue": "Cost" } ] }, "format": { "textFormat": { "bold": true } } } }, "index": 0 } }, { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4, } ], "booleanRule": { "condition": { "type": "DATE_BEFORE", "values": [ { "relativeDate": "PAST_WEEK" } ] }, "format": { "textFormat": { "italic": true, "foregroundColor": { "blue": 1 } } } } }, "index": 1 } } ] }
Después de la solicitud, la regla de formato aplicada actualiza la hoja. En este ejemplo, la fecha actual es 26/9/2016:
Agregar una regla de fórmula personalizada a un rango
En la siguiente muestra de código de spreadsheets.batchUpdate
, se indica cómo usar AddConditionalFormatRuleRequest
para establecer una nueva regla de formato condicional para el rango B5:B8 de una hoja de cálculo en función de una fórmula personalizada. La regla calcula el producto de la celda
en las columnas A y B. Si el producto es mayor que 120, el texto de la celda se establece en negrita y cursiva.
A continuación, se muestra el protocolo de solicitud.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startColumnIndex": 2, "endColumnIndex": 3, "startRowIndex": 4, "endRowIndex": 8 } ], "booleanRule": { "condition": { "type": "CUSTOM_FORMULA", "values": [ { "userEnteredValue": "=GT(A5*B5,120)" } ] }, "format": { "textFormat": { "bold": true, "italic": true } } } }, "index": 0 } } ] }
Después de la solicitud, la regla de formato aplicada actualiza la hoja:
Cómo borrar una regla de formato condicional
En la siguiente muestra de código spreadsheets.batchUpdate, se indica cómo usar DeleteConditionalFormatRuleRequest
para borrar la regla de formato condicional con índice 0
en la hoja especificada por SHEET_ID.
A continuación, se muestra el protocolo de solicitud.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "deleteConditionalFormatRule": { "sheetId": SHEET_ID, "index": 0 } } ] }
Leer la lista de reglas de formato condicional
En la siguiente muestra de código spreadsheets.get
, se indica cómo obtener el título, el elemento SHEET_ID y la lista de todas las reglas de formato condicional para cada hoja de una hoja de cálculo. El parámetro de consulta fields
determina qué datos mostrar.
A continuación, se muestra el protocolo de solicitud.
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(properties(title,sheetId),conditionalFormats)
La respuesta consta de un recurso Spreadsheet
, que contiene un arreglo de objetos Sheet
, cada uno con un elemento SheetProperties
y un arreglo de elementos ConditionalFormatRule
. Si un campo de respuesta determinado se establece en el valor predeterminado, se omite de la respuesta.
{ "sheets": [ { "properties": { "sheetId": 0, "title": "Sheet1" }, "conditionalFormats": [ { "ranges": [ { "startRowIndex": 4, "endRowIndex": 8, "startColumnIndex": 2, "endColumnIndex": 3 } ], "booleanRule": { "condition": { "type": "CUSTOM_FORMULA", "values": [ { "userEnteredValue": "=GT(A5*B5,120)" } ] }, "format": { "textFormat": { "bold": true, "italic": true } } } }, { "ranges": [ { "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4 } ], "booleanRule": { "condition": { "type": "DATE_BEFORE", "values": [ { "relativeDate": "PAST_WEEK" } ] }, "format": { "textFormat": { "foregroundColor": { "blue": 1 }, "italic": true } } } }, ... ] } ] }
Actualiza una regla de formato condicional o su prioridad
En la siguiente muestra de código de spreadsheets.batchUpdate
, se indica cómo usar UpdateConditionalFormatRuleRequest
con varias solicitudes. La primera solicitud mueve una regla de formato condicional existente a un índice más alto (de 0
a 2
, lo que disminuye su prioridad). Con la segunda solicitud, se reemplaza la regla de formato condicional del índice 0
por una regla nueva que da formato a las celdas que contienen el texto exacto especificado (“Costo total”) en el rango A1:D5. El traslado de la primera solicitud se completa antes de que comience la segunda, por lo que la segunda solicitud reemplaza la regla que estaba originalmente en el índice 1
.
A continuación, se muestra el protocolo de solicitud.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "updateConditionalFormatRule": { "sheetId": SHEET_ID, "index": 0, "newIndex": 2 }, "updateConditionalFormatRule": { "sheetId": SHEET_ID, "index": 0, "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4, } ], "booleanRule": { "condition": { "type": "TEXT_EQ", "values": [ { "userEnteredValue": "Total Cost" } ] }, "format": { "textFormat": { "bold": true } } } } } } ] }