将图表添加到幻灯片

本页介绍了如何从 Google 表格中提取现有图表并将其添加到 Google 幻灯片演示文稿中。

在演示文稿中添加图表有助于增强演示效果,并让观众了解数据的意义。图表是一种非常强大的工具,可用于显示数据集中的模式或趋势,并有助于清晰地传达定量数据。

上述视频介绍了如何根据电子表格数据生成幻灯片。其中包含一个完整的示例 (Python),该示例可向幻灯片添加图表,并将电子表格单元格数据导入到表格中。

关于添加图表

无论何时展示定量信息,数据图表都能增强演示效果。借助 Slides API,您可以添加在 Google 表格中创建的任何图表,包括条形图、折线图、饼图等。

将 Google 表格图表添加到 Slides API 演示文稿的概念

如上图所示,您必须先在 Google 表格中创建图表。创建图表后,您可以将其嵌入到演示文稿中。

在演示文稿中管理图表的一般流程如下:

  1. 在 Google 表格中创建图表。
  2. 使用 Google 表格 API 读取生成的 EmbeddedChart 的图表 ID。
  3. 使用 CreateSheetsChartRequest 一次,将其添加到幻灯片中。
  4. 根据需要使用 RefreshSheetsChartRequest 将其同步到源数据。

静态图表与关联图表

使用该 API 向演示文稿添加图表时,您需要指定一个参数,即 LinkingMode。这决定了图表是作为静态图片添加,还是作为可在日后刷新的对象添加。

在以下情况下使用 LINKED 模式:

  • 您希望日后刷新图表,以反映基础数据的变化。
  • 您希望协作者获得包含源图表的电子表格的链接。

在以下情况下,请使用 NOT_LINKED_IMAGE(静态)模式:

  • 您希望图表在未来永远不会发生变化。
  • 您不希望协作者看到指向源电子表格的链接。

访问 Google 表格的范围

当您向幻灯片添加图表时,Slides API 需要在 Google 表格中访问该图表。这意味着您的请求必须使用以下范围之一:

  • 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 表格中图表的电子表格 ID 和图表 ID。然后,您可以使用 CreateSheetsChartRequest 调用 batchUpdate 方法一次来添加图表。

以下示例获取图表并将其作为 LINKED 添加到幻灯片中,以便日后刷新。

Apps 脚本

slides/api/Snippets.gs
/**  * 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.  * @param {string} presentationId  * @param {string} pageId  * @param {string} shapeId  * @param {string} sheetChartId  * @returns {*}  */ function createSheetsChart(presentationId, pageId, shapeId, sheetChartId) {   const emu4M = {     magnitude: 4000000,     unit: 'EMU'   };   const presentationChartId = 'MyEmbeddedChart';   const requests = [{     createSheetsChart: {       objectId: presentationChartId,       spreadsheetId: shapeId,       chartId: sheetChartId,       linkingMode: 'LINKED',       elementProperties: {         pageObjectId: pageId,         size: {           height: emu4M,           width: emu4M         },         transform: {           scaleX: 1,           scaleY: 1,           translateX: 100000,           translateY: 100000,           unit: 'EMU'         }       }     }   }];    // Execute the request.   try {     const batchUpdateResponse = Slides.Presentations.batchUpdate({       requests: requests     }, presentationId);     console.log('Added a linked Sheets chart with ID: %s', presentationChartId);      return batchUpdateResponse;   } catch (err) {     // TODO (Developer) - Handle exception     console.log('Failed with error: %s', err.error);   } };

Go

slides/snippets/presentations.go
// 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. emu4M := slides.Dimension{Magnitude: 4000000, Unit: "EMU"} presentationChartId := "MyEmbeddedChart" requests := []*slides.Request{{ 	CreateSheetsChart: &slides.CreateSheetsChartRequest{ 		ObjectId:      presentationChartId, 		SpreadsheetId: spreadsheetId, 		ChartId:       sheetChartId, 		LinkingMode:   "LINKED", 		ElementProperties: &slides.PageElementProperties{ 			PageObjectId: pageId, 			Size: &slides.Size{ 				Height: &emu4M, 				Width:  &emu4M, 			}, 			Transform: &slides.AffineTransform{ 				ScaleX:     1.0, 				ScaleY:     1.0, 				TranslateX: 100000.0, 				TranslateY: 100000.0, 				Unit:       "EMU", 			}, 		}, 	}, }}  // Execute the requests. body := &slides.BatchUpdatePresentationRequest{Requests: requests} response, _ := slidesService.Presentations.BatchUpdate(presentationId, body).Do() fmt.Printf("Added a linked Sheets chart with ID %s", presentationChartId)

Java

slides/snippets/src/main/java/CreateSheetsChart.java
import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.slides.v1.Slides; import com.google.api.services.slides.v1.SlidesScopes; import com.google.api.services.slides.v1.model.AffineTransform; import com.google.api.services.slides.v1.model.BatchUpdatePresentationRequest; import com.google.api.services.slides.v1.model.BatchUpdatePresentationResponse; import com.google.api.services.slides.v1.model.CreateSheetsChartRequest; import com.google.api.services.slides.v1.model.Dimension; import com.google.api.services.slides.v1.model.PageElementProperties; import com.google.api.services.slides.v1.model.Request; import com.google.api.services.slides.v1.model.Size; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials;  import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List;  /* Class to demonstrate the use of Slides Create Chart API */ public class CreateSheetsChart {   /**    * Adds chart from spreadsheet to slides as linked.    *    * @param presentationId - id of the presentation.    * @param pageId         - id of the page.    * @param spreadsheetId  - id of the spreadsheet.    * @param sheetChartId   - id of the chart in sheets.    * @return presentation chart id    * @throws IOException - if credentials file not found.    */   public static BatchUpdatePresentationResponse createSheetsChart(       String presentationId, String pageId, String spreadsheetId, Integer sheetChartId)       throws IOException {         /* Load pre-authorized user credentials from the environment.            TODO(developer) - See https://developers.google.com/identity for             guides on implementing OAuth2 for your application. */     GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()         .createScoped(Collections.singleton(SlidesScopes.PRESENTATIONS));     HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(         credentials);      // Create the slides API client     Slides service = new Slides.Builder(new NetHttpTransport(),         GsonFactory.getDefaultInstance(),         requestInitializer)         .setApplicationName("Slides samples")         .build();      // 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")))));      BatchUpdatePresentationResponse response = null;     try {       // Execute the request.       BatchUpdatePresentationRequest body =           new BatchUpdatePresentationRequest().setRequests(requests);       response = service.presentations().batchUpdate(presentationId, body).execute();       System.out.println("Added a linked Sheets chart with ID " + presentationChartId);     } catch (GoogleJsonResponseException e) {       // TODO(developer) - handle error appropriately       GoogleJsonError error = e.getDetails();       if (error.getCode() == 404) {         System.out.printf("Presentation not found with id '%s'.\n", presentationId);       } else {         throw e;       }     }     return response;   } }

JavaScript

slides/snippets/slides_create_sheets_chart.js
function createSheetsChart(presentationId, pageId, shapeId, sheetChartId, callback) {   // 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.   const emu4M = {     magnitude: 4000000,     unit: 'EMU',   };   const presentationChartId = 'MyEmbeddedChart';   const requests = [{     createSheetsChart: {       objectId: presentationChartId,       spreadsheetId: shapeId,       chartId: sheetChartId,       linkingMode: 'LINKED',       elementProperties: {         pageObjectId: pageId,         size: {           height: emu4M,           width: emu4M,         },         transform: {           scaleX: 1,           scaleY: 1,           translateX: 100000,           translateY: 100000,           unit: 'EMU',         },       },     },   }];   // Execute the request.   try {     gapi.client.slides.presentations.batchUpdate({       presentationId: presentationId,       requests: requests,     }).then((batchUpdateResponse) => {       console.log(`Added a linked Sheets chart with ID: ${presentationChartId}`);       if (callback) callback(batchUpdateResponse.result);     });   } catch (err) {     document.getElementById('content').innerText = err.message;     return;   } }

Node.js

slides/snippets/slides_create_sheets_chart.js
/**  * Embeds a Sheets chart onto a page in a presentation.  * @param {string} presentationId The presentation ID.  * @param {string} pageId The page ID.  * @param {string} spreadsheetId The spreadsheet ID.  * @param {string} sheetChartId The sheet's chart ID.  */ async function createSheetsChart(     presentationId,     pageId,     spreadsheetId,     sheetChartId, ) {   const {GoogleAuth} = require('google-auth-library');   const {google} = require('googleapis');    const auth = new GoogleAuth({     scopes: 'https://www.googleapis.com/auth/presentations',   });    const service = google.slides({version: 'v1', auth});    // 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.   const emu4M = {     magnitude: 4000000,     unit: 'EMU',   };   const presentationChartId = 'MyEmbeddedChart';   const requests = [     {       createSheetsChart: {         objectId: presentationChartId,         spreadsheetId: spreadsheetId,         chartId: sheetChartId,         linkingMode: 'LINKED',         elementProperties: {           pageObjectId: pageId,           size: {             height: emu4M,             width: emu4M,           },           transform: {             scaleX: 1,             scaleY: 1,             translateX: 100000,             translateY: 100000,             unit: 'EMU',           },         },       },     },   ];    // Execute the request.   try {     const batchUpdateResponse = await service.presentations.batchUpdate({       presentationId,       resource: {         requests,       },     });     console.log(`Added a linked Sheets chart with ID: ${presentationChartId}`);     return batchUpdateResponse.data;   } catch (err) {     // TODO (developer) - Handle exception     throw err;   } }

PHP

slides/snippets/src/SlidesCreateSheetsChart.php
<?php use Google\Client; use Google\Service\Drive; use Google\Service\Slides; use Google\Service\Slides\Request;   function createSheetsChart($presentationId, $pageId, $spreadsheetId, $sheetChartId) {     /* Load pre-authorized user credentials from the environment.        TODO(developer) - See https://developers.google.com/identity for         guides on implementing OAuth2 for your application. */     $client = new Google\Client();     $client->useApplicationDefaultCredentials();     $client->addScope(Google\Service\Drive::DRIVE);     $slidesService = new Google_Service_Slides($client);     // 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.     try {         //creating new presentaion chart         $presentationChartId = 'MyEmbeddedChart';         $emu4M = array('magnitude' => 4000000, 'unit' => 'EMU');         $requests = array();         $requests[] = new Google_Service_Slides_Request(             array(                 'createSheetsChart' => array(                     '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\n", $response->getPresentationId());         return $response;     } catch (Exception $e) {         echo 'Message: ' . $e->getMessage();     } }

Python

slides/snippets/slides_create_sheets_chart.py
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError   def create_sheets_chart(     presentation_id, page_id, spreadsheet_id, sheet_chart_id ):   """   create_sheets_chart the user has access to.   Load pre-authorized user credentials from the environment.   TODO(developer) - See https://developers.google.com/identity   for guides on implementing OAuth2 for the application.   """   creds, _ = google.auth.default()   # pylint: disable=maybe-no-member   try:     slides_service = build("slides", "v1", credentials=creds)     # 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(f"Added a linked Sheets chart with ID: {presentation_chart_id}")     return response   except HttpError as error:     print(f"An error occurred: {error}")     return error   if __name__ == "__main__":   # Put the presentation_id, Page_id of slides   # spreadsheet_id and sheet_chart_id to be submitted.   create_sheets_chart(       "10QnVUx1X2qHsL17WUidGpPh_SQhXYx40CgIxaKk8jU4",       "FIRSTSLIDE",       "17eqFZl_WK4WVixX8PjvjfLD77DraoFwMDXeiHB3dvuM",       "1107320627",   )

Ruby

slides/snippets/lib/file_snippets.rb
# 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 = 'my_embedded_chart' requests = [{   create_sheets_chart: {     object_id_prop:     presentation_chart_id,     spreadsheet_id:     spreadsheet_id,     chart_id:           sheet_chart_id,     linking_mode:       'LINKED',     element_properties: {       page_object_id: page_id,       size:           {         height: emu4M,         width:  emu4M       },       transform:      {         scale_x:     1,         scale_y:     1,         translate_x: 100000,         translate_y: 100000,         unit:        'EMU'       }     }   } }]  # Execute the request. req = Google::Apis::SlidesV1::BatchUpdatePresentationRequest.new(requests: requests) response = slides_service.batch_update_presentation(presentation_id, req)  puts "Added a linked Sheets chart with ID: #{presentation_chart_id}"

刷新图表

如果您在演示文稿中嵌入了 LINKED 图表,则可以使用 RefreshSheetsChartRequest 随时刷新该图表。这样一来,系统会更新图表,使其与所基于的底层 Google 表格图表和数据保持同步。

以下示例会刷新现有图表:

Apps 脚本

slides/api/Snippets.gs
/**  * Refresh the sheets charts  * @param {string} presentationId  * @param {string} presentationChartId  * @returns {*}  */ function refreshSheetsChart(presentationId, presentationChartId) {   const requests = [{     refreshSheetsChart: {       objectId: presentationChartId     }   }];    // Execute the request.   try {     const batchUpdateResponse = Slides.Presentations.batchUpdate({       requests: requests     }, presentationId);     console.log('Refreshed a linked Sheets chart with ID: %s', presentationChartId);      return batchUpdateResponse;   } catch (err) {     // TODO (Developer) - Handle exception     console.log('Failed with error: %s', err.error);   } };

Go

slides/snippets/presentations.go
requests := []*slides.Request{{ 	RefreshSheetsChart: &slides.RefreshSheetsChartRequest{ 		ObjectId: presentationChartId, 	}, }}  // Execute the requests. body := &slides.BatchUpdatePresentationRequest{Requests: requests} response, _ := slidesService.Presentations.BatchUpdate(presentationId, body).Do() fmt.Printf("Refreshed a linked Sheets chart with ID %s", presentationChartId)

Java

slides/snippets/src/main/java/RefreshSheetsChart.java
import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.slides.v1.Slides; import com.google.api.services.slides.v1.SlidesScopes; import com.google.api.services.slides.v1.model.BatchUpdatePresentationRequest; import com.google.api.services.slides.v1.model.BatchUpdatePresentationResponse; import com.google.api.services.slides.v1.model.RefreshSheetsChartRequest; import com.google.api.services.slides.v1.model.Request; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials;  import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List;  /* Class to demonstrate the use of Slides Refresh Chart API */ public class RefreshSheetsChart {   /**    * Refresh the sheets charts.    *    * @param presentationId      - id of the presentation.    * @param presentationChartId - id of the presentation chart.    * @return presentation chart id    * @throws IOException - if credentials file not found.    */   public static BatchUpdatePresentationResponse refreshSheetsChart(       String presentationId, String presentationChartId) throws IOException {         /* Load pre-authorized user credentials from the environment.            TODO(developer) - See https://developers.google.com/identity for             guides on implementing OAuth2 for your application. */     GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()         .createScoped(Collections.singleton(SlidesScopes.PRESENTATIONS));     HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(         credentials);      // Create the slides API client     Slides service = new Slides.Builder(new NetHttpTransport(),         GsonFactory.getDefaultInstance(),         requestInitializer)         .setApplicationName("Slides samples")         .build();      List<Request> requests = new ArrayList<>();      // Refresh an existing linked Sheets chart embedded a presentation.     requests.add(new Request()         .setRefreshSheetsChart(new RefreshSheetsChartRequest()             .setObjectId(presentationChartId)));      BatchUpdatePresentationResponse response = null;     try {       // Execute the request.       BatchUpdatePresentationRequest body =           new BatchUpdatePresentationRequest().setRequests(requests);       response = service.presentations().batchUpdate(presentationId, body).execute();       System.out.println("Refreshed a linked Sheets chart with ID " + presentationChartId);     } catch (GoogleJsonResponseException e) {       // TODO(developer) - handle error appropriately       GoogleJsonError error = e.getDetails();       if (error.getCode() == 400) {         System.out.printf("Presentation chart not found with id '%s'.\n", presentationChartId);       } else if (error.getCode() == 404) {         System.out.printf("Presentation not found with id '%s'.\n", presentationId);       } else {         throw e;       }     }     return response;   } }

JavaScript

slides/snippets/slides_refresh_sheets_chart.js
function refreshSheetsChart(presentationId, presentationChartId, callback) {   const requests = [{     refreshSheetsChart: {       objectId: presentationChartId,     },   }];   // Execute the request.   try {     gapi.client.slides.presentations.batchUpdate({       presentationId: presentationId,       requests: requests,     }).then((batchUpdateResponse) => {       console.log(`Refreshed a linked Sheets chart with ID: ${presentationChartId}`);       if (callback) callback(batchUpdateResponse.result);     });   } catch (err) {     document.getElementById('content').innerText = err.message;     return;   } }

Node.js

slides/snippets/slides_refresh_sheets_chart.js
/**  * Refreshes an embedded sheet chart.  * @param {string} presentationId The presentation ID.  * @param {string} presentationChartId The presentation's chart ID.  */ async function refreshSheetsChart(presentationId, presentationChartId) {   const {GoogleAuth} = require('google-auth-library');   const {google} = require('googleapis');    const auth = new GoogleAuth({     scopes: 'https://www.googleapis.com/auth/presentations',   });    const service = google.slides({version: 'v1', auth});    const requests = [     {       refreshSheetsChart: {         objectId: presentationChartId,       },     },   ];    // Execute the request.   try {     const batchUpdateResponse = await service.presentations.batchUpdate({       presentationId,       resource: {         requests,       },     });     console.log(         `Refreshed a linked Sheets chart with ID: ${presentationChartId}`,     );     return batchUpdateResponse.data;   } catch (err) {     // TODO (developer) - Handle exception     throw err;   } }

PHP

slides/snippets/src/SlidesRefreshSheetsChart.php
<?php use Google\Client; use Google\Service\Drive; use Google\Service\Slides; use Google\Service\Slides\BatchUpdatePresentationRequest;  function refreshSheetsChart($presentationId, $presentationChartId) {     /* Load pre-authorized user credentials from the environment.        TODO(developer) - See https://developers.google.com/identity for         guides on implementing OAuth2 for your application. */     $client = new Google\Client();     $client->useApplicationDefaultCredentials();     $client->addScope(Google\Service\Drive::DRIVE);     $slidesService = new Google_Service_Slides($client);     try {          $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\n", $response->getPresentationId());         return $response;     } catch (Exception $e) {         echo 'Message: ' . $e->getMessage();     } }

Python

slides/snippets/slides_refresh_sheets_chart.py
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError   def refresh_sheets_chart(presentation_id, presentation_chart_id):   """   refresh_sheets_chart the user has access to.   Load pre-authorized user credentials from the environment.   TODO(developer) - See https://developers.google.com/identity   for guides on implementing OAuth2 for the application.   """   creds, _ = google.auth.default()   # pylint: disable=maybe-no-member   try:     slides_service = build("slides", "v1", credentials=creds)     # 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(f"Refreshed a linked Sheets chart with ID:{presentation_chart_id}")     return response   except HttpError as error:     print(f"An error occurred: {error}")     return error   if __name__ == "__main__":   # Put the presentation_id, presentation_chart_id   # to be submitted.   refresh_sheets_chart(       "10QnVUx1X2qHsL17WUidGpPh_SQhXYx40CgIxaKk8jU4", "1107320627"   )

Ruby

slides/snippets/lib/file_snippets.rb
# Refresh an existing linked Sheets chart embedded in a presentation. requests = [{   refresh_sheets_chart: {     object_id_prop: presentation_chart_id   } }]  # Execute the request. req = Google::Apis::SlidesV1::BatchUpdatePresentationRequest.new(requests: requests) response = slides_service.batch_update_presentation(presentation_id, req)  puts "Refreshed a linked Sheets chart with ID: #{presentation_chart_id}"