The G Suite team recently launched the very
first Google Slides API,
opening up a whole new set of possibilities, including leveraging data
already sitting in a spreadsheet or database, and programmatically
generating slide decks or slide content based on that data. Why is this
a big deal? One of the key advantages of slide decks is that they can take
database or spreadsheet data and make it more presentable for human consumption.
This is useful when the need arises to communicate the information reflected by
that data to management or potential customers.

Walking developers through a short application demonstrating both the Sheets and
Slides APIs to make this happen is the topic of today's DevByte video. The
sample app starts by reading all the necessary data from the spreadsheet using
the Sheets API. The Slides API takes over from there, creating new slides for
the data, then populating those slides with the Sheets data.

Developers interact with Slides by sending API requests. Similar to the Google Sheets API, these requests
come in the form of JSON payloads. You create an array like in the JavaScript
pseudocode below featuring requests to create a cell table on a slide and import
a chart from a Sheet:

var requests = [

{"createTable": {

"elementProperties":

{"pageObjectId": slideID},

"rows": 8,

"columns": 4

}},

{"createSheetsChart": {

"spreadsheetId": sheetID,

"chartId": chartID,

"linkingMode": "LINKED",

"elementProperties": {

"pageObjectId": slideID,

"size": {

"height": { ... },

"width": { ... }

},

"transform": { ... }

}

}}

];
If you've got at least one request, say in a variable named
requests (as above), including the Sheet's
sheetID and chartID plus the
presentation page's slideID. You'd then pass it to the API
with just one call to the presentations().batchUpdate() command,
which in Python looks like the below if SLIDES is your API
service endpoint:

SLIDES.presentations().batchUpdate(presentationId=slideID,

body=requests).execute()

Creating tables is fairly straightforward. Creating charts has some magical
features, one of those being the linkingMode. A value of "LINKED"
means that if the Sheet data changes (altering the chart in the Sheet), the same
chart in a slide presentation can be refreshed to match the latest image, either
by the API or in the Slides user interface! You can also request a plain old
static image that doesn't change with the data by selecting a value of
"NOT_LINKED_IMAGE" for linkingMode. More on this can be found in
the documentation
on creating charts, and check out the video where you'll see both those API
requests in action.

For a detailed look at the complete code sample featured in the video,
check out the deep dive post. We look forward
to seeing the interesting integrations you build with the power of both APIs!