차트

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Google Sheets API를 사용하면 필요에 따라 스프레드시트 내에 차트를 만들고 업데이트할 수 있습니다. 이 페이지의 예시는 API로 일반적인 차트 작업을 수행하는 방법을 보여줍니다.

이 예에서는 자리표시자 spreadsheetIdsheetId가 이러한 ID를 제공할 위치를 나타내는 데 사용됩니다. 스프레드시트 URL에서 스프레드시트 ID를 확인할 수 있습니다. spreadsheets.get 메서드를 사용하여 시트 ID를 가져올 수 있습니다.

자리표시자 chartId는 지정된 차트의 ID를 나타내는 데도 사용됩니다. API로 차트를 만들 때 이 ID를 설정하거나 API가 자동으로 생성하도록 허용할 수 있습니다. spreadsheet.get 메서드로 기존 차트의 ID를 읽을 수 있습니다.

차트 소스 데이터

이 예에서는 사용 중인 스프레드시트의 첫 번째 시트 (소스 ID: sourceSheetId)에 다음과 같은 소스 데이터가 있다고 가정합니다. 첫 번째 행의 문자열은 개별 열의 라벨입니다.

A B C D E
1 모델 번호 판매 - 1월 판매 - 2월 판매 - 3월 총 매출
2 D-1 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 11학년 75 68 87 230
7 24학년 74 52 62 188

열 차트 추가하기

다음 spreadsheets.batchUpdate 요청은 소스 데이터에서 열 차트를 만들어 새 시트에 배치합니다. 이 요청은 차트를 구성하기 위해 다음을 수행합니다.

  • 차트 유형을 열 차트로 설정합니다.
  • 차트 하단에 범례를 추가합니다.
  • 차트 및 축 제목을 설정합니다.
  • 기본 형식과 색상을 사용하면서 3개월 동안의 판매를 나타내는 데이터 시리즈 3개를 구성합니다.

요청 프로토콜은 아래에 나와 있습니다. 스프레드시트 업데이트 가이드에서는 Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 보여줍니다.

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId: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": sourceSheetId,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 0,
                          "endColumnIndex": 1
                        }
                      ]
                    }
                  }
                }
              ],
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": sourceSheetId,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 1,
                          "endColumnIndex": 2
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": sourceSheetId,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 2,
                          "endColumnIndex": 3
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "sheetId": sourceSheetId,
                          "startRowIndex": 0,
                          "endRowIndex": 7,
                          "startColumnIndex": 3,
                          "endColumnIndex": 4
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                }
              ],
              "headerCount": 1
            }
          },
          "position": {
            "newSheet": true
          }
        }
      }
    }
  ]
}

이 요청은 다음과 같이 새 시트에 차트를 생성합니다.

열 차트 레시피 결과 추가

원형 차트 추가하기

다음 spreadsheets.batchUpdate 요청은 소스 데이터에서 3D 원형 차트를 만듭니다. 이 요청은 차트를 구성하기 위해 다음을 수행합니다.

  • 차트 제목을 설정합니다.
  • 차트 오른쪽에 범례를 추가합니다.
  • 차트를 3D 원형 차트로 설정합니다. 3D 원형 차트는 평면 원형 차트와 달리 중앙에 '도넛 구멍'이 없어야 합니다.
  • 차트 데이터 계열을 각 모델 번호의 총 판매로 설정합니다.
  • sheetId로 지정된 시트의 C3 셀에 차트를 고정합니다. X 및 Y 방향으로 모두 50픽셀 오프셋이 적용됩니다.

요청 프로토콜은 아래에 나와 있습니다. 스프레드시트 업데이트 가이드에서는 Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 보여줍니다.

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

이 요청은 다음과 같은 차트를 생성합니다.

원형 차트 레시피 결과 추가

또는 요청 내에서 범례 위치 값을 RIGHT_LEGEND에서 LABELED_LEGEND로 업데이트하여 범례 값이 원형 차트 슬라이스에 연결되도록 할 수도 있습니다.

'legendPosition': 'LABELED_LEGEND',

업데이트된 요청은 다음과 같은 차트를 생성합니다.

원형 차트 레시피 결과 추가

인접하지 않은 여러 범위를 사용하여 선 차트 추가하기

다음 spreadsheets.batchUpdate 요청은 소스 데이터에서 선 차트를 만들어 소스 시트에 배치합니다. 인접하지 않은 범위를 선택하여 ChartSourceRange에서 행을 제외할 수 있습니다.

이 요청은 차트를 구성하기 위해 다음을 수행합니다.

  • 차트 유형을 선 차트로 설정합니다.
  • 가로 x축 제목을 설정합니다.
  • 판매를 나타내는 데이터 계열을 구성합니다. 기본 형식과 색상을 사용하여 A1:A3 및 A6:A7을 domain로, B1:B3 및 B6:B7을 series로 설정합니다. 범위는 요청 URL에 A1 표기법을 사용하여 지정됩니다.
  • sheetId로 지정된 시트의 셀 H8에 차트를 고정합니다.

요청 프로토콜은 아래에 나와 있습니다. 스프레드시트 업데이트 가이드에서는 Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 보여줍니다.

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

이 요청은 다음과 같이 새 시트에 차트를 생성합니다.

인접하지 않은 선 차트 추가 레시피 결과

차트 삭제

다음 spreadsheets.batchUpdate 요청은 chartId로 지정된 차트를 삭제합니다.

요청 프로토콜은 아래에 나와 있습니다. 스프레드시트 업데이트 가이드에서는 Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 보여줍니다.

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

차트 속성 수정

다음 spreadsheets.batchUpdate 요청은 열 차트 추가 레시피에서 만든 차트를 수정하여 데이터, 유형, 모양을 수정합니다. 차트 속성의 하위 집합은 개별적으로 변경할 수 없습니다. 수정하려면 spec 필드 전체를 UpdateChartSpecRequest와 함께 제공해야 합니다. 기본적으로 차트 사양을 수정하려면 새 사양으로 대체해야 합니다.

다음 요청은 chartId로 지정된 원본 차트를 업데이트합니다.

  • 차트 유형을 BAR으로 설정합니다.
  • 범례를 차트의 오른쪽으로 이동합니다.
  • '판매'가 하단 축에, '모델 번호'가 왼쪽 축에 위치하도록 축을 뒤집습니다.
  • 축 제목 형식을 24포인트 글꼴, 굵게, 기울임꼴로 설정합니다.
  • 차트에서 'W-24' 데이터를 삭제합니다 (차트 소스 데이터의 7행).

요청 프로토콜은 아래에 나와 있습니다. 스프레드시트 업데이트 가이드에서는 Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 보여줍니다.

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
  "requests": [
    {
      "updateChartSpec": {
        "chartId": chartId,
        "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": sourceSheetId,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 0,
                        "endColumnIndex": 1
                      }
                    ]
                  }
                }
              }
            ],
            "series": [
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": sourceSheetId,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 1,
                        "endColumnIndex": 2
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              },
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": sourceSheetId,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 2,
                        "endColumnIndex": 3
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              },
              {
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "sheetId": sourceSheetId,
                        "startRowIndex": 0,
                        "endRowIndex": 6,
                        "startColumnIndex": 3,
                        "endColumnIndex": 4
                      }
                    ]
                  }
                },
                "targetAxis": "BOTTOM_AXIS"
              }
            ],
            "headerCount": 1
          }
        }
      }
    }
  ]
}

요청 후 차트는 다음과 같이 표시됩니다.

차트 레시피 결과 수정

차트 이동 또는 크기 조정하기

다음 spreadsheets.batchUpdate 요청은 차트를 이동하고 크기를 조정합니다. 요청 후 chartId로 지정된 차트는 다음과 같습니다.

  • 원본 시트의 셀 A5에 고정되었습니다.
  • X 방향으로 100픽셀만큼 오프셋됩니다.
  • 1200x742픽셀로 크기가 조정됩니다 (차트의 기본 크기는 600x371픽셀).

이 요청은 fields 매개변수로 지정된 속성만 변경합니다. 다른 속성 (예: offsetYPixels)은 원래 값을 유지합니다.

요청 프로토콜은 아래에 나와 있습니다. 스프레드시트 업데이트 가이드에서는 Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 보여줍니다.

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{
  "requests": [
    {
      "updateEmbeddedObjectPosition": {
        "objectId": chartId,
        "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 객체에 표현됩니다. 응답 필드가 기본값으로 설정되면 응답에서 생략됩니다.

이 예에서 첫 번째 시트 (sourceSheetId)에는 차트가 없으므로 빈 중괄호가 반환됩니다. 두 번째 시트에는 열 차트 추가를 통해 만든 차트만 있습니다.

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?fields=sheets(charts)
{
  "sheets": [
    {},
    {
      "charts": [
        {
          "chartId": chartId,
          "position": {
            "sheetId": sheetId
          },
          "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": sourceSheetId,
                          "startColumnIndex": 0,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  }
                }
              ],
              "legendPosition": "BOTTOM_LEGEND",
              "series": [
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 2,
                          "endRowIndex": 7,
                          "sheetId": sourceSheetId,
                          "startColumnIndex": 1,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 3,
                          "endRowIndex": 7,
                          "sheetId": sourceSheetId,
                          "startColumnIndex": 2,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                },
                {
                  "series": {
                    "sourceRange": {
                      "sources": [
                        {
                          "endColumnIndex": 4,
                          "endRowIndex": 7,
                          "sheetId": sourceSheetId,
                          "startColumnIndex": 3,
                          "startRowIndex": 0,
                        }
                      ]
                    }
                  },
                  "targetAxis": "LEFT_AXIS"
                }
              ]
            },
            "hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS",
            "title": "Model Q1 Sales",
          },
        }
      ]
    }
  ]
}