Formattazione condizionale

L'API Fogli Google ti consente di creare e aggiornare le regole di formattazione condizionale nei fogli di lavoro. Solo alcuni tipi di formattazione (grassetto, corsivo, barrato, colore primo piano e colore sfondo) possono essere controllati tramite la formattazione condizionale. Gli esempi in questa pagina illustrano come eseguire operazioni comuni di formattazione condizionale con l'API Fogli.

Questi esempi sono presentati come richieste HTTP per essere indipendenti dalla lingua. Per scoprire come implementare un aggiornamento collettivo in lingue diverse utilizzando le librerie client dell'API Google, consulta Aggiornare i fogli di lavoro.

In questi esempi, i segnaposto SPREADSHEET_ID e SHEET_ID indicano dove fornire questi ID. Puoi trovare l'ID del foglio di lavoro nell'URL del foglio di lavoro. Puoi recuperare l'ID foglio utilizzando il metodo spreadsheets.get. Gli intervalli vengono specificati utilizzando la notazione A1. Un intervallo di esempio è Foglio1!A1:D5.

Aggiungere un gradiente di colore condizionale in una riga

Il seguente spreadsheets.batchUpdate esempio di codice del metodo mostra come utilizzare il metodo AddConditionalFormatRuleRequest per stabilire nuove regole di formattazione condizionale con gradiente per le righe 10 e 11 di un foglio. La prima regola stabilisce che i colori di sfondo delle celle di quella riga vengono impostati in base al loro valore. Il valore più basso della riga è di colore rosso scuro, mentre il valore più alto è di colore verde brillante. Il colore degli altri valori viene interpolato. La seconda regola fa lo stesso, ma con valori numerici specifici che determinano i punti di interruzione della sfumatura (e colori diversi). La richiesta utilizza sheets.InterpolationPointType come type.

Il protocollo di richiesta è mostrato di seguito.

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

Dopo la richiesta, la regola di formattazione applicata aggiorna il foglio. Poiché il gradiente nella riga 11 ha il punto massimo impostato su 256, tutti i valori sopra hanno il colore del punto massimo:

Aggiungere il risultato della ricetta nel formato gradiente

Aggiungere una regola di formattazione condizionale a un insieme di intervalli

Il seguente spreadsheets.batchUpdate esempio di codice metodo mostra come utilizzare la funzione AddConditionalFormatRuleRequest per stabilire una nuova regola di formattazione condizionale per le colonne A e C di un foglio. La regola prevede che i colori di sfondo delle celle con valori pari o inferiori a 10 vengano modificati in rosso scuro. La regola viene inserita all'indice 0, pertanto ha la priorità sulle altre regole di formattazione. La richiesta utilizza ConditionType come type per BooleanRule.

Il protocollo di richiesta è mostrato di seguito.

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

Dopo la richiesta, la regola di formattazione applicata aggiorna il foglio:

Aggiungere il risultato della ricetta di formattazione condizionale

Aggiungere regole di formattazione condizionale di date e testo a un intervallo

Il seguente spreadsheets.batchUpdate codice di esempio del metodo mostra come utilizzare il metodo AddConditionalFormatRuleRequest per stabilire nuove regole di formattazione condizionale per l'intervallo A1:D5 in un foglio, in base ai valori di data e testo in queste celle. Se il testo contiene la stringa "Costo" (senza distinzione tra maiuscole e minuscole), la prima regola imposta il testo della cella in grassetto. Se la cella contiene una data precedente alla settimana scorsa, la seconda regola imposta il testo della cella in corsivo e lo colora di blu. La richiesta utilizza ConditionType come type per BooleanRule.

Il protocollo di richiesta è mostrato di seguito.

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

Dopo la richiesta, la regola di formattazione applicata aggiorna il foglio. In questo esempio, la data corrente è 26/09/2016:

Risultato della ricetta per la formattazione condizionale di testo e data

Aggiungere una regola di formula personalizzata a un intervallo

Il seguente spreadsheets.batchUpdate esempio di codice metodo mostra come utilizzare il metodo AddConditionalFormatRuleRequest per stabilire una nuova regola di formattazione condizionale per l'intervallo B5:B8 in un foglio, in base a una formula personalizzata. La regola calcola il prodotto della cella nelle colonne A e B. Se il prodotto è maggiore di 120, il testo della cella è impostato su grassetto e corsivo. La richiesta utilizza ConditionType come type per BooleanRule.

Il protocollo di richiesta è mostrato di seguito.

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

Dopo la richiesta, la regola di formattazione applicata aggiorna il foglio:

Risultato della ricetta di formattazione condizionale personalizzata

Eliminare una regola di formattazione condizionale

Il seguente spreadsheets.batchUpdate esempio di codice del metodo mostra come utilizzare il metodo DeleteConditionalFormatRuleRequest per eliminare la regola di formattazione condizionale con indice 0 nel foglio specificato da SHEET_ID.

Il protocollo di richiesta è mostrato di seguito.

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

Leggere l'elenco delle regole di formattazione condizionale

Il seguente codice metodo spreadsheets.get esempio mostra come ottenere il titolo, SHEET_ID e l'elenco di tutte le regole di formattazione condizionale per ogni foglio di un foglio di lavoro. Il parametro query fields determina quali dati restituire.

Il protocollo di richiesta è mostrato di seguito.

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

La risposta è costituita da una risorsa Spreadsheet, che contiene un array di oggetti Sheet ciascuno con un elemento SheetProperties e un array di elementi ConditionalFormatRule. Se un determinato campo di risposta è impostato sul valore predefinito, viene omesso dalla risposta. La richiesta utilizza ConditionType come type per 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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

Aggiornare una regola di formattazione condizionale o la relativa priorità

Il seguente metodo spreadsheets.batchUpdate esempio di codice mostra come utilizzare UpdateConditionalFormatRuleRequest con più richieste. La prima richiesta sposta una regola di formato condizionale esistente a un indice superiore (da 0 a 2, diminuendone la priorità). La seconda richiesta sostituisce la regola di formattazione condizionale all'indice 0 con una nuova regola che formatta le celle contenenti il testo esatto specificato ("Costo totale") nell'intervallo A1:D5. Il trasferimento della prima richiesta viene completato prima dell'inizio della seconda, quindi la seconda richiesta sostituisce la regola che si trovava originariamente nell'indice 1. La richiesta utilizza ConditionType come type per BooleanRule.

Il protocollo di richiesta è mostrato di seguito.

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