Grafikler

Google Sheets API, e-tablolarda gerektiği gibi grafik oluşturmanıza ve güncellemenize olanak tanır. Bu sayfadaki örneklerde, Sheets API ile bazı yaygın grafik işlemlerini nasıl gerçekleştirebileceğiniz gösterilmektedir.

Bu örnekler, dilden bağımsız olması için HTTP istekleri şeklinde sunulur. Google API istemci kitaplıklarını kullanarak farklı dillerde toplu güncelleme işlemini nasıl uygulayacağınızı öğrenmek için E-tabloları güncelleme başlıklı makaleye bakın.

Bu örneklerde, SPREADSHEET_ID ve SHEET_ID yer tutucuları

bu kimlikleri nerede sağlayacağınızı gösterir. E-tablo kimliğini e-tablo URL'sinde bulabilirsiniz. Sayfa kimliğini spreadsheets.get yöntemini kullanarak alabilirsiniz. Aralıklar A1 gösterimi kullanılarak belirtilir. Örnek bir aralık: Sayfa1!A1:D5.

Ayrıca, CHART_ID yer tutucusu belirli bir grafiğin kimliğini gösterir. Bu kimliği E-Tablolar API'si ile grafik oluştururken ayarlayabilir veya E-Tablolar API'nin sizin için bir kimlik oluşturmasına izin verebilirsiniz. Mevcut grafiklerin kimliklerini spreadsheets.get yöntemiyle alabilirsiniz.

Son olarak, yer tutucu SOURCE_SHEET_ID, kaynak verileri içeren sayfanızı gösterir. Bu örneklerde, Grafik kaynak verileri altında listelenen tablo budur.

Grafik kaynak verileri

Bu örneklerde, kullanılan e-tablonun ilk sayfasında ("Sayfa1") aşağıdaki kaynak verilerin bulunduğunu varsayalım. İlk satırdaki dizeler, sütunların etiketleridir. E-tablonuzdaki diğer sayfalardan nasıl okuma yapılacağına dair örnekleri görmek için A1 gösterimi başlıklı makaleyi inceleyin.

A B C D E
1 Model Numarası Satış - Ocak Satış - Şubat Satış - Mart Toplam Satış
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

Sütun grafik ekleme

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, kaynak verilerden sütun grafiği oluşturmak ve bunu yeni bir sayfaya yerleştirmek için AddChartRequest işlevinin nasıl kullanılacağı gösterilmektedir. İstek, grafiği yapılandırmak için aşağıdakileri yapar:

  • Grafik türünü sütun grafik olarak ayarlar.
  • Grafiğin en altına bir açıklama ekler.
  • Grafik ve eksen başlıklarını ayarlar.
  • Varsayılan biçimlendirme ve renkleri kullanarak 3 farklı aya ait satışları temsil eden 3 veri serisi yapılandırır.

İstek protokolü aşağıda gösterilmektedir.

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

İstek, yeni bir sayfada aşağıdaki gibi bir grafik oluşturur:

Sütun grafik tarifi sonucu ekleme

Pasta grafik ekleme

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, kaynak verilerden 3D pasta grafiği oluşturmak için AddChartRequest işlevinin nasıl kullanılacağı gösterilmektedir. İstek, grafiği yapılandırmak için aşağıdakileri yapar:

  • Grafik başlığını ayarlar.
  • Grafiğin sağına bir gösterge ekler.
  • Grafiği 3D pasta grafik olarak ayarlar. 3D pasta grafiklerin, düz pasta grafiklerde olduğu gibi ortasında "halka" bulunamayacağını unutmayın.
  • Grafik veri serilerini her model numarası için toplam satış olarak ayarlar.
  • SHEET_ID ile belirtilen sayfadaki C3 hücresine grafiği, hem X hem de Y yönünde 50 piksel uzaklıkta sabitler.

İstek protokolü aşağıda gösterilmektedir.

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

İstek, aşağıdaki gibi bir grafik oluşturur:

Pasta grafiği tarifi sonucu ekleme

Alternatif olarak, isteğin içindeki RIGHT_LEGENDlegendPositionLABELED_LEGEND değerini LABELED_LEGEND olarak da güncelleyebilirsiniz. Böylece, gösterge değerleri pasta grafiği dilimlerine bağlanır.

'legendPosition': 'LABELED_LEGEND',

Güncellenen istek, aşağıdaki gibi bir grafik oluşturur:

Pasta grafiği tarifi sonucu ekleme

Bitişik olmayan birden fazla aralık kullanarak çizgi grafik ekleme

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, kaynak verilerden çizgi grafik oluşturmak ve bunu kaynak sayfaya yerleştirmek için AddChartRequest işlevinin nasıl kullanılacağı gösterilmektedir. Bitişik olmayan aralıkları seçerek satırları ChartSourceRange'den hariç tutabilirsiniz.

İstek, grafiği yapılandırmak için aşağıdakileri yapar:

  • Grafik türünü çizgi grafik olarak ayarlar.
  • Yatay x ekseni başlığını ayarlar.
  • Satışları temsil eden bir veri serisi yapılandırır. Varsayılan biçimlendirme ve renkler kullanılırken A1:A3 ve A6:A7, domain, B1:B3 ve B6:B7 ise series olarak ayarlanır. Aralıklar, istek URL'sinde A1 gösterimi kullanılarak belirtilir.
  • Grafiği, SHEET_ID ile belirtilen sayfanın H8 hücresine sabitler.

İstek protokolü aşağıda gösterilmektedir.

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

İstek, yeni bir sayfada aşağıdaki gibi bir grafik oluşturur:

Bitişik olmayan aralık çizgi grafiği tarifi ekleme
sonuç

Grafik silme

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, CHART_ID ile belirtilen bir grafiği silmek için DeleteEmbeddedObjectRequest işlevinin nasıl kullanılacağı gösterilmektedir.

İstek protokolü aşağıda gösterilmektedir.

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

Grafik özelliklerini düzenleme

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, Sütun grafiği ekleme tarifinde oluşturulan grafiği düzenlemek, verilerini, türünü ve görünümünü değiştirmek için UpdateChartSpecRequest nasıl kullanılacağı gösterilmektedir. Grafik özelliklerinin alt kümeleri tek tek değiştirilemez. Düzenleme yapmak için spec alanının tamamını UpdateChartSpecRequest ile doldurmanız gerekir. Temel olarak, grafik spesifikasyonunu düzenlemek için yeni bir spesifikasyonla değiştirmeniz gerekir.

Aşağıdaki istek, orijinal grafiği (CHART_ID ile belirtilen) günceller:

  • Grafik türünü BAR olarak ayarlar.
  • Göstergeyi grafiğin sağına taşır.
  • Eksenleri ters çevirerek "Satış"ın alt eksende, "Model Numaraları"nın ise sol eksende yer almasını sağlar.
  • Eksen başlığı biçimini 24 punto yazı tipi, kalın ve italik olarak ayarlar.
  • Grafikteki "W-24" verilerini (grafik kaynağı verilerinde 7. satır) kaldırır.

İstek protokolü aşağıda gösterilmektedir.

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

İstekten sonra grafik şu şekilde görünür:

Grafik yemek tarifi sonucunu düzenleme

Grafiği taşıma veya yeniden boyutlandırma

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, bir grafiği taşımak ve yeniden boyutlandırmak için UpdateEmbeddedObjectPositionRequest işaretinin nasıl kullanılacağı gösterilmektedir. İstekten sonra, CHART_ID tarafından belirtilen grafik:

  • Orijinal sayfasının A5 hücresine sabitlenir.
  • X yönünde 100 piksel ofset.
  • 1.200 x 742 piksel olarak yeniden boyutlandırılır (grafik için varsayılan boyut 600 x 371 pikseldir).

İstek yalnızca fields parametresiyle belirtilen özellikleri değiştirir. Diğer özellikler (ör. offsetYPixels) orijinal değerlerini korur.

İstek protokolü aşağıda gösterilmektedir.

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

Grafik verilerini okuma

Aşağıdaki spreadsheets.get kod örneğinde, bir e-tablodan grafik verilerinin nasıl alınacağı gösterilmektedir. fields sorgu parametresi, yalnızca grafik verilerinin döndürülmesi gerektiğini belirtir.

Bu yöntem çağrısına verilen yanıt, sheet nesnelerinin dizisini içeren bir spreadsheet nesnesidir. Bir sayfada bulunan tüm grafikler sheet nesnesinde gösterilir. Bir yanıt alanı varsayılan değere ayarlanırsa yanıttan çıkarılır.

Bu örnekte, ilk sayfada (SOURCE_SHEET_ID) grafik olmadığı için boş bir küme parantezi çifti döndürülür. İkinci sayfada, Sütun grafiği ekleme ile oluşturulan grafik dışında başka bir şey yok.

İstek protokolü aşağıda gösterilmektedir.

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