Formato condicional

La API de Google Sheets te permite crear y actualizar las reglas de formato condicional en hojas de cálculo. Solo ciertos tipos de formato (negrita, cursiva, tachado, color de primer plano y color de fondo) se pueden controlar mediante reglas y el formateo. Los ejemplos de esta página ilustran cómo lograr las operaciones de formato condicional con la API de Hojas de cálculo.

Estos ejemplos se presentan como solicitudes HTTP para que no tengan idioma. Para aprender cómo implementar una actualización por lotes en diferentes idiomas con la API de Google bibliotecas cliente, consulta Actualización hojas de cálculo.

En estos ejemplos, los marcadores de posición SPREADSHEET_ID y SHEET_ID se indica dónde se deben proporcionar esos ID. Puedes encontrar la hoja de cálculo ID en la URL de la hoja de cálculo. Puedes obtener el ID de la hoja mediante el spreadsheets.get. El los rangos se especifican con la notación A1. Los el rango de ejemplo es Hoja1!A1:D5.

Cómo agregar un gradiente de color condicional en una fila

Lo siguiente spreadsheets.batchUpdate método de muestra de código muestra cómo usar el AddConditionalFormatRuleRequest establecer nuevas reglas de formato condicional de gradiente para las filas 10 y 11 de una de la hoja de cálculo. La primera regla establece que las celdas de esa fila tengan sus colores de fondo que se establecen 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 está interpolada. La segunda regla hace lo mismo, pero con valores numéricos específicos. determinar los extremos del gradiente (y los diferentes colores). La solicitud usa el sheets.InterpolationPointType que el type.

El protocolo de solicitud se muestra a continuación.

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 gradiente en la fila 11 tiene su maxpoint establecido en 256; cualquier valor por encima de él tiene el maxpoint color:

Resultado de la receta para agregar el formato de gradiente

Cómo agregar una regla de formato condicional a un conjunto de rangos

Lo siguiente spreadsheets.batchUpdate método de muestra de código muestra cómo usar el AddConditionalFormatRuleRequest para establecer una nueva regla de formato condicional para las columnas A y C de una hoja. La regla establece que las celdas con valores de 10 o menos tienen su fondo los colores cambiaron a rojo oscuro. La regla se inserta en el índice 0, por lo que tarda prioridad sobre otras reglas de formato. La solicitud usa el ConditionType que el type para el BooleanRule

El protocolo de solicitud se muestra a continuación.

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:

Agregar resultado de receta para formato condicional

Cómo agregar reglas de formato condicional de fecha y texto a un rango

Lo siguiente spreadsheets.batchUpdate método de muestra de código muestra cómo usar el AddConditionalFormatRuleRequest para establecer nuevas reglas de formato condicional para el rango A1:D5 en una hoja según la fecha y los valores de texto de esas celdas. Si el texto contiene la cadena "Costo" (no distingue mayúsculas de minúsculas), la primera regla establece el texto de la celda en negrita. Si el botón celda contiene una fecha anterior a la semana pasada, la segunda regla establece el el texto de una celda en cursiva y darle el color azul. La solicitud usa el ConditionType que el type para el BooleanRule

El protocolo de solicitud se muestra a continuación.

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:

Resultado de la receta para formato condicional de texto y fecha

Agregar una regla de fórmula personalizada a un rango

Lo siguiente spreadsheets.batchUpdate método de muestra de código muestra cómo usar el AddConditionalFormatRuleRequest para establecer una nueva regla de formato condicional para el rango B5:B8 en una hoja, según 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. La solicitud usa el ConditionType que el type para el BooleanRule

El protocolo de solicitud se muestra a continuación.

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:

Resultado de la receta para formato condicional personalizado

Cómo borrar una regla de formato condicional

Lo siguiente spreadsheets.batchUpdate método de muestra de código muestra cómo usar el DeleteConditionalFormatRuleRequest para borrar la regla de formato condicional con el índice 0 en la hoja especificada antes del SHEET_ID.

El protocolo de solicitud se muestra a continuación.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "deleteConditionalFormatRule": {
        "sheetId": SHEET_ID,
        "index": 0
      }
    }
  ]
}

Lee la lista de reglas de formato condicional

Lo siguiente Código del método spreadsheets.get ejemplo muestra cómo obtener el título, SHEET_ID y la lista de todo las reglas de formato condicional para cada hoja de una hoja de cálculo. La consulta fields determina qué datos se mostrarán.

El protocolo de solicitud se muestra a continuación.

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(properties(title,sheetId),conditionalFormats)

La respuesta consta de un Spreadsheet, que contiene un array de Sheet objetos que tienen pañal SheetProperties elemento y un array de ConditionalFormatRule o de terceros. Si un campo de respuesta determinado se establece con el valor predeterminado, se omite. de la respuesta. La solicitud usa el ConditionType que el type para el BooleanRule

{
  "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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

Actualizar una regla de formato condicional o su prioridad

Lo siguiente spreadsheets.batchUpdate método de muestra de código muestra cómo usar el UpdateConditionalFormatRuleRequest con varias solicitudes. La primera solicitud transfiere un formato condicional existente a un índice más alto (de 0 a 2, y disminuye su prioridad). El segundo solicitud 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 la 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. El usa el ConditionType que el type para el BooleanRule

El protocolo de solicitud se muestra a continuación.

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
              }
            }
          }
        }
      }
    }
  ]
}