グラフ

Google Sheets API を使用すると、必要に応じてスプレッドシート内のグラフを作成、更新できます。このページの例は、Sheets API を使用して一般的なグラフ オペレーションを行う方法を示しています。

これらの例は、言語に依存しない HTTP リクエストの形式で提供されています。Google API クライアント ライブラリを使用してバッチ アップデートをさまざまな言語で実装する方法については、スプレッドシートを更新するをご覧ください。

以下の例では、プレースホルダ SPREADSHEET_IDSHEET_ID が、これらの ID を指定する場所を示しています。スプレッドシート ID はスプレッドシートの URL で確認できます。シート ID を取得するには、spreadsheets.get メソッドを使用します。範囲は A1 表記で指定します。範囲の例は「Sheet1!A1:D5」です。

また、プレースホルダ CHART_ID は特定のグラフの ID を示します。Sheets API でグラフを作成するときにこの ID を設定するか、Sheets API で ID を生成できます。既存のグラフの ID は、spreadsheets.get メソッドで取得できます。

最後に、プレースホルダ SOURCE_SHEET_ID は、ソースデータを含むシートを示します。これらの例では、[グラフのソースデータ] の下に表示されるテーブルです。

グラフのソースデータ

これらの例では、使用するスプレッドシートの最初のシート(「Sheet1」)に次のソースデータがあるとします。最初の行の文字列は、個々の列のラベルです。スプレッドシート内の他のシートから読み取る方法の例については、A1 表記をご覧ください。

A B C D E
1 モデル番号 セールス - 1 月 販売促進 - 2 月 セールス - 3 月 売上合計
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

縦棒グラフを追加

次の spreadsheets.batchUpdate コードサンプルは、AddChartRequest を使用してソースデータから縦棒グラフを作成し、新しいシートに配置する方法を示しています。このリクエストでは、次の処理を行ってグラフを構成します。

  • グラフの種類を縦棒グラフとして設定します。
  • グラフの下部に凡例を追加します。
  • グラフと軸のタイトルを設定します。
  • 3 つのデータ系列を設定し、デフォルトの書式と色を使用して 3 か月間の売り上げを表します。

リクエスト プロトコルを以下に示します。

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

このリクエストでは、次のようなグラフが新しいシートに作成されます。

縦棒グラフの追加のレシピ結果

円グラフを追加する

次の spreadsheets.batchUpdate コードサンプルは、AddChartRequest を使ってソースデータから 3D 円グラフを作成する方法を示しています。このリクエストでは、次の処理を行ってグラフを構成します。

  • グラフのタイトルを設定します。
  • グラフの右側に凡例を追加します。
  • グラフを 3D 円グラフとして設定します。平面の円グラフとは異なり、3D 円グラフでは中央に「ドーナツの穴」を表示することはできません。
  • グラフのデータ系列を各モデル番号の総売上として設定します。
  • SHEET_ID で指定されたシートのセル C3 にグラフを固定し、X 方向と Y 方向の両方に 50 ピクセルのオフセットを設定します。

リクエスト プロトコルを以下に示します。

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

このリクエストにより、次のようなグラフが作成されます。

円グラフの追加のレシピ結果

または、リクエスト内で凡例の値を RIGHT_LEGEND から LABELED_LEGEND に更新して、凡例の値が円グラフのスライスに接続されるようにすることもできます。

'legendPosition': 'LABELED_LEGEND',

更新されたリクエストにより、次のようなグラフが作成されます。

円グラフの追加のレシピ結果

隣接しない複数の範囲を使用して折れ線グラフを追加する

次の spreadsheets.batchUpdate コードサンプルは、AddChartRequest を使用してソースデータから折れ線グラフを作成し、ソースシートに配置する方法を示しています。隣接しない範囲を選択すると、ChartSourceRange から行を除外できます。

このリクエストでは、次の処理を行ってグラフを構成します。

  • グラフの種類を折れ線グラフとして設定します。
  • 横方向の X 軸のタイトルを設定します。
  • 売り上げを表すデータ系列を設定します。デフォルトの書式と色を使用しながら、A1:A3 と A6:A7 を domain に、B1:B3 と B6:B7 を series として設定します。範囲は、リクエスト URL で A1 表記を使用して指定します。
  • SHEET_ID で指定されたシートのセル H8 にグラフを固定します。

リクエスト プロトコルを以下に示します。

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

このリクエストでは、次のようなグラフが新しいシートに作成されます。

隣接しない範囲の折れ線グラフのレシピ結果を追加

グラフを削除する

次の spreadsheets.batchUpdate コードサンプルは、DeleteEmbeddedObjectRequest を使用して、CHART_ID で指定されたグラフを削除する方法を示しています。

リクエスト プロトコルを以下に示します。

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

グラフのプロパティを編集する

次の spreadsheets.batchUpdate コードサンプルは、縦棒グラフの追加で作成したグラフを UpdateChartSpecRequest を使用して編集し、データ、型、外観を変更する方法を示しています。グラフのプロパティのサブセットを個別に変更することはできません。編集するには、spec フィールド全体を UpdateChartSpecRequest で指定する必要があります。基本的に、グラフ仕様を編集するには、新しい仕様に置き換える必要があります。

次のリクエストでは、元のグラフ(CHART_ID で指定)を更新します。

  • グラフの種類を BAR に設定します。
  • 凡例をグラフの右側に移動します。
  • 「Sales」が下の軸、「Model Numbers」が左の軸になるように、軸を反転します。
  • 軸のタイトルの形式を 24 ポイントのフォント、太字、斜体に設定します。
  • グラフから「W-24」データ(グラフのソースデータの行 7)を削除します。

リクエスト プロトコルを以下に示します。

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

リクエスト後、グラフは次のように表示されます。

グラフのレシピの結果を編集

グラフの移動とサイズ変更

次の spreadsheets.batchUpdate コードサンプルは、UpdateEmbeddedObjectPositionRequest を使用してグラフの移動とサイズ変更を行う方法を示しています。リクエスト後、CHART_ID で指定されたグラフは次のようになります。

  • 元のシートのセル A5 に固定されます。
  • X 方向の 100 ピクセルのオフセット。
  • 1,200 x 742 ピクセルにサイズ変更しました(グラフのデフォルト サイズは 600 x 371 ピクセルです)。

このリクエストでは、fields パラメータで指定されたプロパティのみが変更されます。他のプロパティ(offsetYPixels など)では元の値が保持されます。

リクエスト プロトコルを以下に示します。

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

グラフデータを読み取る

次の spreadsheets.get コードサンプルは、スプレッドシートからグラフデータを取得する方法を示しています。fields クエリ パラメータは、グラフデータのみを返すように指定します。

このメソッド呼び出しに対するレスポンスは、sheet オブジェクトの配列を含む spreadsheet オブジェクトです。シート上のグラフはすべて sheet オブジェクトで表されます。レスポンス フィールドがデフォルト値に設定されている場合は、レスポンスから除外されます。

この例では、最初のシート(SOURCE_SHEET_ID)にグラフがないため、中かっこの空のペアが返されます。2 番目のシートには、縦棒グラフを追加で作成したグラフが含まれています。

リクエスト プロトコルを以下に示します。

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