슬라이드에 차트 추가

이 페이지는 Google Slides에 차트를 추가하는 방법에 대해 설명합니다.

프레젠테이션에 차트를 추가하면 효과가 높고 의미있는 데이터를 대상에게 전달하는 데 도움이 될 수 있습니다. 차트는 데이터 집합에 패턴이나 추세를 표시하는 매우 강력한 도구이며, 수량 데이터에 대한 정보를 명확히 전달하는 데 도움을 줄 수 있습니다.

차트 추가에 대한 정보

수량 정보를 프레젠테이션할 때 데이터 차트를 유용하게 사용할 수 있습니다. Slides API를 사용하여 Google Sheets에서 만들 수 있는 모든 차트(예: 막대 그래프, 꺾은선형 차트, 원형 차트 등)를 포함할 수 있습니다.

Slides 프레젠테이션에 Google Sheets 차트를 추가하는 개념

상기 다이어그램에서 보듯이 먼저 Google Sheets에서 차트를 만들어야 합니다. 차트가 있는 경우 프레젠테이션에 삽입할 수 있습니다.

프레젠테이션에서 차트를 관리하는 일반적인 과정은 다음과 같습니다.

  1. Google Sheets에서 차트를 만듭니다.
  2. 그 결과 생성된 EmbeddedChart의 차트 ID를 Sheets API를 사용하여 읽습니다.
  3. CreateSheetsChartRequest를 한 번 사용하여 해당 차트를 슬라이드에 추가합니다.
  4. 필요한 경우 RefreshSheetsChartRequest를 사용하여 소스 데이터와 동기화합니다.

정적 차트와 링크된 차트

API를 사용하여 차트를 프레젠테이션에 추가할 때 LinkingMode 매개변수를 지정합니다. 이 매개변수는 차트를 정적 이미지로 추가할지 나중에 새로 고칠 수 있는 객체로 추가할지 결정합니다.

다음의 경우 LINKED 모드를 사용합니다.

  • 나중에 차트를 새로 고쳐 기본 데이터의 변경사항을 반영하려는 경우
  • 소스 차트를 포함하는 스프레드시트에 대한 링크를 공동작업자에게 제공하려는 경우

다음의 경우 NOT_LINKED_IMAGE(정적) 모드를 사용합니다.

  • 차트를 나중에 변경하지 않으려는 경우
  • 소스 스프레드시트에 대한 링크를 공동작업자가 볼 수 없게 하려는 경우

Google Sheets 액세스 범위

슬라이드에 차트를 추가할 때 Slides API는 Google Sheets에서 슬라이드에 액세스해야 합니다. 이는 요청에서 다음 범위 중에 하나를 사용해야 함을 의미합니다.

  • https://www.googleapis.com/auth/spreadsheets.readonly (기본 설정)
  • https://www.googleapis.com/auth/spreadsheets
  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

일반적으로 제한 수준이 가장 높은 spreadsheets.readonly 범위를 사용하는 것이 가장 좋습니다. 그러나 앱이 이미 위와 다른 범위 중 하나를 사용하는 경우 해당 범위만 사용하십시오.

차트 추가

차트를 추가하려면 Google Sheets 차트의 스프레드시트 ID와 차트 ID를 알아야 합니다. 그런 다음 batchUpdate 메서드를 호출하고 CreateSheetsChartRequest를 한 번 사용하여 차트를 추가합니다.

다음 예시는 차트를 가져와서 나중에 새로 고칠 수 있도록 해당 차트를 슬라이드에 LINKED로 추가합니다.

Java

// Embed a Sheets chart (indicated by the spreadsheetId and sheetChartId) onto
// a page in the presentation. Setting the linking mode as "LINKED" allows the
// chart to be refreshed if the Sheets version is updated.
List<Request> requests = new ArrayList<>();
Dimension emu4M = new Dimension().setMagnitude(4000000.0).setUnit("EMU");
String presentationChartId = "MyEmbeddedChart";
requests.add(new Request()
        .setCreateSheetsChart(new CreateSheetsChartRequest()
                .setObjectId(presentationChartId)
                .setSpreadsheetId(spreadsheetId)
                .setChartId(sheetChartId)
                .setLinkingMode("LINKED")
                .setElementProperties(new PageElementProperties()
                        .setPageObjectId(pageId)
                        .setSize(new Size()
                                .setHeight(emu4M)
                                .setWidth(emu4M))
                        .setTransform(new AffineTransform()
                                .setScaleX(1.0)
                                .setScaleY(1.0)
                                .setTranslateX(100000.0)
                                .setTranslateY(100000.0)
                                .setUnit("EMU")))));

// Execute the request.
BatchUpdatePresentationRequest body =
        new BatchUpdatePresentationRequest().setRequests(requests);
BatchUpdatePresentationResponse response =
        slidesService.presentations().batchUpdate(presentationId, body).execute();
System.out.println("Added a linked Sheets chart with ID " + presentationChartId);

Python

# Embed a Sheets chart (indicated by the spreadsheet_id and sheet_chart_id) onto
# a page in the presentation. Setting the linking mode as "LINKED" allows the
# chart to be refreshed if the Sheets version is updated.
emu4M = {
    'magnitude': 4000000,
    'unit': 'EMU'
}
presentation_chart_id = 'MyEmbeddedChart'
requests = [
    {
        'createSheetsChart': {
            'objectId': presentation_chart_id,
            'spreadsheetId': spreadsheet_id,
            'chartId': sheet_chart_id,
            'linkingMode': 'LINKED',
            'elementProperties': {
                'pageObjectId': page_id,
                'size': {
                    'height': emu4M,
                    'width': emu4M
                },
                'transform': {
                    'scaleX': 1,
                    'scaleY': 1,
                    'translateX': 100000,
                    'translateY': 100000,
                    'unit': 'EMU'
                }
            }
        }
    }
]

# Execute the request.
body = {
    'requests': requests
}
response = slides_service.presentations().batchUpdate(
    presentationId=presentation_id, body=body).execute()
print('Added a linked Sheets chart with ID: {0}'.format(presentation_chart_id))

PHP

// Embed a Sheets chart (indicated by the spreadsheet_id and sheet_chart_id) onto
// a page in the presentation. Setting the linking mode as "LINKED" allows the
// chart to be refreshed if the Sheets version is updated.
$presentationChartId = 'MyEmbeddedChart';
$emu4M = array('magnitude' => 4000000, 'unit' => 'EMU');
$requests = array();
$requests[] = new Google_Service_Slides_Request(array(
  'createSheetsChart' => array(
    'objectId' => $shapeId,
    'spreadsheetId' => $spreadsheetId,
    'chartId' => $sheetChartId,
    'linkingMode' => 'LINKED',
    'elementProperties' => array(
      'pageObjectId' => $pageId,
      'size' => array(
        'height' => $emu4M,
        'width' => $emu4M
      ),
      'transform' => array(
        'scaleX' => 1,
        'scaleY' => 1,
        'translateX' => 100000,
        'translateY' => 100000,
        'unit' => 'EMU'
      )
    )
  )
));

// Execute the request.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
  'requests' => $requests
));
$response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest);
printf("Added a linked Sheets chart with ID: %s", $shapeId);

차트 새로고침

프레젠테이션에 LINKED 차트를 삽입한 경우 RefreshSheetsChartRequest를 사용하여 해당 차트를 언제든지 새로 고칠 수 있습니다. 그러면 차트가 업데이트되어 기본 Sheets 차트와 이 차트를 기반으로 하는 데이터와 동기화됩니다.

다음 예시는 기존 차트를 새로 고칩니다.

Java

List<Request> requests = new ArrayList<>();

// Refresh an existing linked Sheets chart embedded a presentation.
requests.add(new Request()
        .setRefreshSheetsChart(new RefreshSheetsChartRequest()
                .setObjectId(presentationChartId)));

// Execute the request.
BatchUpdatePresentationRequest body =
        new BatchUpdatePresentationRequest().setRequests(requests);
BatchUpdatePresentationResponse response =
        slidesService.presentations().batchUpdate(presentationId, body).execute();
System.out.println("Refreshed a linked Sheets chart with ID " + presentationChartId);

Python

# Refresh an existing linked Sheets chart embedded in a presentation.
requests = [
    {
        'refreshSheetsChart': {
            'objectId': presentation_chart_id
        }
    }
]

# Execute the request.
body = {
    'requests': requests
}
response = slides_service.presentations().batchUpdate(
    presentationId=presentation_id, body=body).execute()
print('Refreshed a linked Sheets chart with ID: {0}'.format(presentation_chart_id))

PHP

// Refresh an existing linked Sheets chart embedded in a presentation.
$requests = array();
$requests[] = new Google_Service_Slides_Request(array(
  'refreshSheetsChart' => array(
    'objectId' => $presentationChartId
  )
));

// Execute the request.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
  'requests' => $requests
));
$response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest);
printf("Refreshed a linked Sheets chart with ID: %s", $shapeId);

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.