Grafici

L'API Fogli Google consente di creare e aggiornare i grafici all'interno di fogli di lavoro in base alle esigenze. Gli esempi in questa pagina illustrano come eseguire alcune operazioni comuni sui grafici con l'API Fogli.

Questi esempi sono presentati sotto forma di richieste HTTP per essere neutrali dal linguaggio. Per informazioni su come implementare un aggiornamento batch in diversi linguaggi utilizzando le librerie client delle API di Google, consulta Aggiornare i fogli di lavoro.

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

Inoltre, il segnaposto CHART_ID indica l'ID di un determinato grafico. Puoi impostare questo ID quando crei un grafico con l'API Fogli o consentire all'API Fogli di generarne uno per te. Puoi ottenere gli ID dei grafici esistenti con il metodo spreadsheets.get.

Infine, il segnaposto SOURCE_SHEET_ID indica il foglio con i dati di origine. In questi esempi si tratta della tabella elencata in Dati di origine del grafico.

Dati di origine del grafico

Per questi esempi, supponiamo che il foglio di lavoro utilizzato contenga i seguenti dati di origine nel primo foglio ("Foglio1"). Le stringhe nella prima riga sono etichette per le singole colonne. Per visualizzare esempi di lettura da altri fogli nel foglio di lavoro, vedi la notazione A1.

A B C D E
1 Numero modello Vendite - Gen Vendite - Feb Vendite - Mar Vendite totali
2 D-01X 68 74 60 202
3 FR-0B1 97 76 88 261
4 P-034 27 49 32 108
5 P-105 46 44 67 157
6 W-11 75 68 87 230
7 W-24 74 52 62 188

Aggiungere un grafico a colonne

Il seguente esempio di codice di spreadsheets.batchUpdate mostra come utilizzare AddChartRequest per creare un grafico a colonne a partire dai dati di origine, posizionandoli in un nuovo foglio. Per configurare il grafico, la richiesta:

  • Imposta il tipo di grafico come grafico a colonne.
  • Aggiunge una legenda in fondo al grafico.
  • Imposta i titoli del grafico e dell'asse.
  • Configura 3 serie di dati, che rappresentano le vendite per 3 mesi diversi, usando la formattazione e i colori predefiniti.

Il protocollo di richiesta è mostrato di seguito.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addChart": {
        "chart": {
          "spec": {
            "title": "Model Q1 Sales",
            "basicChart": {
              "chartType": "COLUMN",
              "legendPosition": "BOTTOM_LEGEND",
              "axis": [
                {
                  "position": "BOTTOM_AXIS",
                  "title": "Model Numbers"
                },
                {
                  "position": "LEFT_AXIS",
                  "title": "Sales"
                }
              ],
              "domains": [
                {
                  "domain": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1
                        }
                      ]
                    }
                  }
                }
              ],
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 2,
                          "endColumnIndex": 3
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": SOURCE_SHEET_ID,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 3,
                          "endColumnIndex": 4
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                }
              ],
              "headerCount": 1
            }
          },
          "position": {
            "newSheet": true
          }
        }
      }
    }
  ]
}

La richiesta crea un grafico in un nuovo foglio come questo:

Aggiungi risultato della formula di un grafico a colonne

Aggiungere un grafico a torta

Il seguente esempio di codice di spreadsheets.batchUpdate mostra come utilizzare AddChartRequest per creare un grafico a torta 3D a partire dai dati di origine. La richiesta esegue quanto segue per configurare il grafico:

  • Imposta il titolo del grafico.
  • Aggiunge una legenda a destra del grafico.
  • Imposta il grafico come grafico a torta 3D. Tieni presente che i grafici a torta 3D non possono avere un "foro a ciambella" al centro, come accade per i grafici a torta piatta.
  • Imposta le serie di dati del grafico come vendite totali per ogni numero di modello.
  • Ancora il grafico alla cella C3 del foglio specificato da SHEET_ID, con un offset di 50 pixel in entrambe le direzioni X e Y.

Il protocollo di richiesta è mostrato di seguito.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addChart": {
        "chart": {
          "spec": {
            "title": "Model Q1 Total Sales",
            "pieChart": {
              "legendPosition": "RIGHT_LEGEND",
              "threeDimensional": true,
              "domain": {
                "sourceRange": {
                  "sources": [
                    {
                      "sheetId": SOURCE_SHEET_ID,
                      "startRowIndex": 0,
                      "endRowIndex": 7,
                      "startColumnIndex": 0,
                      "endColumnIndex": 1
                    }
                  ]
                }
              },
              "series": {
                "sourceRange": {
                  "sources": [
                    {
                      "sheetId": SOURCE_SHEET_ID,
                      "startRowIndex": 0,
                      "endRowIndex": 7,
                      "startColumnIndex": 4,
                      "endColumnIndex": 5
                    }
                  ]
                }
              },
            }
          },
          "position": {
            "overlayPosition": {
              "anchorCell": {
                "sheetId": SHEET_ID,
                "rowIndex": 2,
                "columnIndex": 2
              },
              "offsetXPixels": 50,
              "offsetYPixels": 50
            }
          }
        }
      }
    }
  ]
}

La richiesta crea un grafico simile al seguente:

Aggiungi il risultato di una ricetta con un grafico a torta

In alternativa, puoi anche aggiornare il valore legendPosition da RIGHT_LEGEND a LABELED_LEGEND all'interno della richiesta in modo che i valori della legenda siano collegati alle sezioni del grafico a torta.

'legendPosition': 'LABELED_LEGEND',

La richiesta aggiornata crea un grafico come il seguente:

Aggiungi il risultato di una ricetta con un grafico a torta

Aggiungere un grafico a linee utilizzando più intervalli non adiacenti

Il seguente esempio di codice di spreadsheets.batchUpdate mostra come utilizzare AddChartRequest per creare un grafico a linee a partire dai dati di origine, posizionandoli nel foglio di origine. Puoi utilizzare la selezione di intervalli non adiacenti per escludere righe da ChartSourceRange.

Per configurare il grafico, la richiesta effettua le seguenti operazioni:

  • Imposta il tipo di grafico come grafico a linee.
  • Imposta il titolo orizzontale dell'asse X.
  • Configura una serie di dati che rappresenta le vendite. Imposta A1:A3 e A6:A7 come domain e B1:B3 e B6:B7 come series, usando la formattazione e i colori predefiniti. Gli intervalli vengono specificati utilizzando la notazione A1 nell'URL della richiesta.
  • Ancora il grafico alla cella H8 del foglio specificato da SHEET_ID.

Il protocollo di richiesta è mostrato di seguito.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addChart": {
        "chart": {
          "spec": {
            "basicChart": {
              "chartType": "LINE",
              "domains": [
                {
                  "domain": {
                    "sourceRange": {
                      "sources": [
                        {
                          "startRowIndex": 0,
                          "endRowIndex": 3,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1,
                          "sheetId": SOURCE_SHEET_ID
                        },
                        {
                          "startRowIndex": 5,
                          "endRowIndex": 7,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1,
                          "sheetId": SOURCE_SHEET_ID
                        }
                      ]
                    }
                  }
                }
              ],
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "startRowIndex": 0,
                          "endRowIndex": 3,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2,
                          "sheetId": SOURCE_SHEET_ID
                        },
                        {
                          "startRowIndex": 5,
                          "endRowIndex": 7,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2,
                          "sheetId": SOURCE_SHEET_ID
                        }
                      ]
                    }
                  }
                }
              ]
            }
          },
          "position": {
            "overlayPosition": {
              "anchorCell": {
                "sheetId": SOURCE_SHEET_ID,
                "rowIndex": 8,
                "columnIndex": 8
              }
            }
          }
        }
      }
    }
  ]
}

La richiesta crea un grafico in un nuovo foglio come questo:

Aggiungi il risultato della formula di un grafico a linee
a intervalli non adiacente

Eliminare un grafico

Il seguente esempio di codice di spreadsheets.batchUpdate mostra come utilizzare DeleteEmbeddedObjectRequest per eliminare un grafico specificato dal CHART_ID.

Il protocollo di richiesta è mostrato di seguito.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "deleteEmbeddedObject": {
        "objectId": CHART_ID
      }
    }
  ]
}

Modificare le proprietà di un grafico

Il seguente esempio di codice di spreadsheets.batchUpdate mostra come utilizzare UpdateChartSpecRequest per modificare il grafico creato nella formula Aggiungi un grafico a colonne, modificandone i dati, il tipo e l'aspetto. I sottoinsiemi delle proprietà del grafico non possono essere modificati singolarmente. Per apportare modifiche, devi inviare un UpdateChartSpecRequest all'intero campo spec. In sostanza, per modificare una specifica di un grafico è necessario sostituirla con una nuova.

La seguente richiesta aggiorna il grafico originale (specificato da CHART_ID):

  • Imposta il tipo di grafico su BAR.
  • Sposta la legenda a destra del grafico.
  • Inverte gli assi in modo che "Vendite" si trovi sull'asse inferiore e "Numeri di modello" si trovi sull'asse sinistro.
  • Imposta il formato del titolo dell'asse in modo che utilizzi un carattere a 24 punti, in grassetto e in corsivo.
  • Rimuove i dati "W-24" dal grafico (riga 7 nei dati di origine del grafico).

Il protocollo di richiesta è mostrato di seguito.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateChartSpec": {
        "chartId": CHART_ID,
        "spec": {
          "title": "Model Q1 Sales",
          "basicChart": {
            "chartType": "BAR",
            "legendPosition": "RIGHT_LEGEND",
            "axis": [
              {
                "format": {
                  "bold": true,
                  "italic": true,
                  "fontSize": 24
                },
                "position": "BOTTOM_AXIS",
                "title": "Sales"
              },
              {
                "format": {
                  "bold": true,
                  "italic": true,
                  "fontSize": 24
                },
                "position": "LEFT_AXIS",
                "title": "Model Numbers"
              }
            ],
            "domains": [
              {
                "domain": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 0,
                        "endColumnIndex": 1
                      }
                    ]
                  }
                }
              }
            ],
            "series": [
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 1,
                        "endColumnIndex": 2
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              },
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 2,
                        "endColumnIndex": 3
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              },
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": SOURCE_SHEET_ID,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 3,
                        "endColumnIndex": 4
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              }
            ],
            "headerCount": 1
          }
        }
      }
    }
  ]
}

Dopo la richiesta, il grafico viene visualizzato così:

Modifica il risultato della formula del grafico

Spostare o ridimensionare un grafico

Il seguente esempio di codice di spreadsheets.batchUpdate mostra come utilizzare UpdateEmbeddedObjectPositionRequest per spostare e ridimensionare un grafico. Dopo la richiesta, il grafico specificato da CHART_ID è:

  • Ancorata alla cella A5 del foglio originale.
  • Offset in direzione X di 100 pixel.
  • Ridimensionato a 1200 x 742 pixel (la dimensione predefinita di un grafico è 600 x 371 pixel).

La richiesta modifica solo le proprietà specificate con il parametro fields. Altre proprietà (come offsetYPixels) mantengono i valori originali.

Il protocollo di richiesta è mostrato di seguito.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateEmbeddedObjectPosition": {
        "objectId": CHART_ID,
        "newPosition": {
          "overlayPosition": {
            "anchorCell": {
              "rowIndex": 4,
              "columnIndex": 0
            },
            "offsetXPixels": 100,
            "widthPixels": 1200,
            "heightPixels": 742
          }
        },
        "fields": "anchorCell(rowIndex,columnIndex),offsetXPixels,widthPixels,heightPixels"
      }
    }
  ]
}

Leggi i dati del grafico

Il seguente esempio di codice di spreadsheets.get mostra come recuperare i dati del grafico da un foglio di lavoro. Il parametro di query fields specifica che devono essere restituiti solo i dati del grafico.

La risposta a questa chiamata al metodo è un oggetto spreadsheet, che contiene un array di oggetti sheet. Tutti i grafici presenti in un foglio sono rappresentati nell'oggetto sheet. Se un campo di risposta è impostato sul valore predefinito, viene omesso dalla risposta.

In questo esempio, il primo foglio (SOURCE_SHEET_ID) non contiene grafici, quindi viene restituita una coppia di parentesi graffe vuote. Il secondo foglio contiene il grafico creato da Aggiungi un grafico a colonne e nient'altro.

Il protocollo di richiesta è mostrato di seguito.

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(charts)
{
  "sheets": [
    {},
    {
      "charts": [
        {
          "chartId": CHART_ID,
          "position": {
            "sheetId": SHEET_ID
          },
          "spec": {
            "basicChart": {
              "axis": [
                {
                  "format": {
                    "bold": false,
                    "italic": false
                  },
                  "position": "BOTTOM_AXIS",
                  "title": "Model Numbers"
                },
                {
                  "format": {
                    "bold": false,
                    "italic": false
                  },
                  "position": "LEFT_AXIS",
                  "title": "Sales"
                }
              ],
              "chartType": "COLUMN",
              "domains": [
                {
                  "domain": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 1
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 0,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  }
                }
              ],
              "legendPosition": "BOTTOM_LEGEND",
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 2,
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 1,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 3,
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 2,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 4,
                          "endRowIndex": 7,
                          "sheetId": SOURCE_SHEET_ID,
                          "startColumnIndex": 3,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                }
              ]
            },
            "hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS",
            "title": "Model Q1 Sales",
          },
        }
      ]
    }
  ]
}