This page describes how to perform certain high-level tasks involving presentations, such as:
- Create a presentation
- Copy an existing presentation
The following paragraphs describe these tasks in detail.
Create a blank presentation
To create a presentation, use the create method on the presentations collection, as shown in the following example.
This example creates a blank presentation with a specified title.
Apps Script
/** * Creates a presentation * @returns {*} the created presentation */ function createPresentation () { try { const presentation = Slides . Presentations . create ({ title : title }); console . log ( 'Created presentation with ID: %s' , presentation . presentationId ); return presentation ; } catch ( err ) { // TODO (Developer) - Handle exception console . log ( 'Failed with error: %s' , err . error ); } };
Go
// Create a presentation and request a PresentationId. p := & slides . Presentation { Title : "Title" , } presentation , err := slidesService . Presentations . Create ( p ). Fields ( "presentationId" , ). Do () if err != nil { log . Fatalf ( "Unable to create presentation. %v" , err ) } fmt . Printf ( "Created presentation with ID: %s" , presentation . PresentationId )
Java
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.Presentation ; import com.google.auth.http.HttpCredentialsAdapter ; import com.google.auth.oauth2.GoogleCredentials ; import java.io.IOException ; import java.util.Collections ; /* Class to demonstrate the use of Slides Create Presentation API */ public class CreatePresentation { /** * Creates a new presentation. * * @param title - the name of the presentation to be created * @return presentation id * @throws IOException - if credentials file not found. */ public static String createPresentation ( String title ) 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 (); // Creates a blank presentation with a specified title. Presentation presentation = new Presentation () . setTitle ( title ); presentation = service . presentations (). create ( presentation ) . setFields ( "presentationId" ) . execute (); // Prints the newly created presentation id. System . out . println ( "Created presentation with ID: " + presentation . getPresentationId ()); return presentation . getPresentationId (); } }
JavaScript
function createPresentation ( title , callback ) { try { gapi . client . slides . presentations . create ({ title : title , }). then (( response ) = > { console . log ( `Created presentation with ID: ${ response . result . presentationId } ` ); if ( callback ) callback ( response ); }); } catch ( err ) { document . getElementById ( 'content' ). innerText = err . message ; return ; } }
Node.js
/** * Creates a Google Slide presentation. * @param {string} title The presentation title. */ async function createPresentation ( title ) { 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 }); try { const presentation = await service . presentations . create ({ title , }); console . log ( `Created presentation with ID: ${ presentation . data . presentationId } ` , ); return presentation ; } catch ( err ) { // TODO (developer) - Handle exception throw err ; } }
PHP
< ?php use Google\Client; use Google\Service\Drive; use Google\Service\Slides; use Google\Service\Slides\Request; function createPresentation($title) { /* 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); $service = new Google_Service_Slides($client); try { $presentation = new Google_Service_Slides_Presentation($title); //creating a presentation $presentation = $service->presentations->create($presentation); printf("Created presentation with ID: %s\n", $presentation->presentationId); return $presentation; } catch (Exception $e) { echo 'Message: ' . $e->getMessage(); } }
Python
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError def create_presentation ( title ): """ Creates the Presentation 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 : service = build ( "slides" , "v1" , credentials = creds ) body = { "title" : title } presentation = service . presentations () . create ( body = body ) . execute () print ( f "Created presentation with ID: { ( presentation . get ( 'presentationId' )) } " ) return presentation except HttpError as error : print ( f "An error occurred: { error } " ) print ( "presentation not created" ) return error if __name__ == "__main__" : # Put the title of the presentation create_presentation ( "finalp" )
Ruby
body = Google :: Apis :: SlidesV1 :: Presentation . new body . title = title presentation = slides_service . create_presentation ( body ) puts "Created presentation with ID: #{ presentation . presentation_id } "
Work with Google Drive folders
There's no option to create a presentation directly within a specified Drive folder using the Google Slides API. By default, the created presentation is saved to the user's root folder on Drive.
However, there are 2 alternatives to saving a file to a Drive folder:
- After the presentation is created, move it to a specific folder using the files.update method of the Drive API. For more information on moving files, refer to Move files between folders .
- Add a blank presentation to a folder using the files.create
method of the Drive API, specifying
application/vnd.google-apps.presentation
as themimeType
. For more information on creating files, refer to Create a file in a folder .
For either alternative, you'll need to add the appropriate Drive API scopes to authorize the call.
To move or create a file within a shared drive folder, refer to Implement shared drive support .
Copy an existing presentation
To copy a presentation, use Drive API's files().copy method.
The following example copies an existing presentation, using a provided string for both the presentation title and the name of the new Drive file.
Apps Script
/** * create a presentation and copy it * @param {string} presentationId - ID of presentation to copy * @returns {*} the copy's presentation id */ function copyPresentation ( presentationId ) { const copyTitle = 'Copy Title' ; let copyFile = { title : copyTitle , parents : [{ id : 'root' }] }; try { copyFile = Drive . Files . copy ( copyFile , presentationId ); // (optional) copyFile.id can be returned directly const presentationCopyId = copyFile . id ; return presentationCopyId ; } catch ( err ) { // TODO (Developer) - Handle exception console . log ( 'Failed with error: %s' , err . error ); } };
Go
// Copy a presentation. file := drive . File { Title : title , } presentationCopyFile , err := driveService . Files . Copy ( id , & file ). Do () if err != nil { log . Fatalf ( "Unable to copy presentation. %v" , err ) } presentationCopyId := presentationCopyFile . Id
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.drive.Drive ; import com.google.api.services.drive.model.File ; import com.google.api.services.slides.v1.SlidesScopes ; import com.google.auth.http.HttpCredentialsAdapter ; import com.google.auth.oauth2.GoogleCredentials ; import java.io.IOException ; import java.util.Collections ; /* Class to demonstrate the use of Slides Copy Presentation API */ public class CopyPresentation { /** * Copy an existing presentation. * * @param presentationId - id of the presentation. * @param copyTitle - New title of the presentation. * @return presentation id * @throws IOException - if credentials file not found. */ public static String copyPresentation ( String presentationId , String copyTitle ) 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 . DRIVE )); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter ( credentials ); // Create the drive API client Drive driveService = new Drive . Builder ( new NetHttpTransport (), GsonFactory . getDefaultInstance (), requestInitializer ) . setApplicationName ( "Slides samples" ) . build (); String presentationCopyId = null ; try { // Copies an existing presentation using specified presentation title. File copyMetadata = new File (). setName ( copyTitle ); File presentationCopyFile = driveService . files (). copy ( presentationId , copyMetadata ). execute (); presentationCopyId = presentationCopyFile . getId (); // Prints the new copied presentation id. System . out . println ( "New copied presentation id " + presentationCopyId ); } 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 presentationCopyId ; } }
JavaScript
function copyPresentation ( presentationId , copyTitle , callback ) { const request = { name : copyTitle , }; try { gapi . client . drive . files . copy ({ fileId : presentationId , resource : request , }). then (( driveResponse ) = > { const presentationCopyId = driveResponse . result . id ; if ( callback ) callback ( presentationCopyId ); console . log ( 'create copy_presentation with id' , presentationCopyId ); }); } catch ( err ) { document . getElementById ( 'content' ). innerText = err . message ; return ; } }
Node.js
/** * Copys a Google Slide presentation. * @param {string} presentationId The presentation to copy. * @param {string} copyTitle The new title. */ async function copyPresentation ( presentationId , copyTitle ) { const { GoogleAuth } = require ( 'google-auth-library' ); const { google } = require ( 'googleapis' ); const auth = new GoogleAuth ({ scopes : 'https://www.googleapis.com/auth/drive' , }); const service = google . drive ({ version : 'v2' , auth }); const request = { name : copyTitle , }; try { const driveResponse = await service . files . copy ({ fileId : presentationId , resource : request , }); const presentationCopyId = driveResponse . data . id ; console . log ( 'Created copied presentation with ID: ' + presentationCopyId ); return driveResponse ; } catch ( err ) { // TODO (developer) - handle exception throw err ; } }
PHP
< ?php use Google\Service\Drive; use Google\Client; use Google\Service\Drive\DriveFile; function copyPresentation($presentationId, $copyTitle) { /* 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); $driveService = new Google_Service_Drive($client); try { $copy = new Google_Service_Drive_DriveFile(array( 'name' => $copyTitle )); $driveResponse = $driveService->files->copy($presentationId, $copy); $presentationCopyId = $driveResponse->id; printf("copyCreated at:%s\n ", $presentationCopyId); return $presentationCopyId; } catch (Exception $e) { echo 'Message: ' . $e->getMessage(); } }
Python
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError def copy_presentation ( presentation_id , copy_title ): """ Creates the copy Presentation 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 : drive_service = build ( "drive" , "v3" , credentials = creds ) body = { "name" : copy_title } drive_response = ( drive_service . files () . copy ( fileId = presentation_id , body = body ) . execute () ) presentation_copy_id = drive_response . get ( "id" ) except HttpError as error : print ( f "An error occurred: { error } " ) print ( "Presentations not copied" ) return error return presentation_copy_id
Ruby
body = Google :: Apis :: SlidesV1 :: Presentation . new body . title = copy_title drive_response = drive_service . copy_file ( presentation_id , body ) puts drive_response presentation_copy_id = drive_response . id
Note that you need to use an appropriate Drive API scope to authorize the call.