本页介绍了如何执行涉及演示文稿的特定高级任务,例如:
- 创建演示文稿
- 复制现有演示文稿
下文将详细介绍这些任务。
创建空白演示文稿
如需创建演示文稿,请对 presentations 集合使用 create 方法,如以下示例所示。
此示例将创建一个具有指定标题的空白演示文稿。
Apps 脚本
slides/api/Snippets.gs
/** * 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
slides/snippets/presentations.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
slides/snippets/src/main/java/CreatePresentation.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
slides/snippets/slides_create_presentation.js
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
slides/snippets/slides_create_presentation.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
slides/snippets/src/SlidesCreatePresentation.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
slides/snippets/slides_create_presentation.py
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
slides/snippets/lib/file_snippets.rb
body = Google::Apis::SlidesV1::Presentation.new body.title = title presentation = slides_service.create_presentation(body) puts "Created presentation with ID: #{presentation.presentation_id}"
处理 Google 云端硬盘文件夹
无法使用 Google 幻灯片 API 直接在指定的云端硬盘文件夹中创建演示文稿。默认情况下,系统会将创建的演示文稿保存到用户云端硬盘的根文件夹中。
不过,您可以通过以下 2 种方式将文件保存到云端硬盘文件夹:
- 创建演示文稿后,使用 Drive API 的 files.update 方法将其移至特定文件夹。如需详细了解如何移动文件,请参阅在文件夹之间移动文件。
- 使用 Drive API 的 files.create 方法向文件夹添加空白演示文稿,并将
application/vnd.google-apps.presentation
指定为mimeType
。如需详细了解如何创建文件,请参阅在文件夹中创建文件。
对于这两种方式,您都需要添加适当的 Drive API 权限范围来授权调用。
如需在共享云端硬盘文件夹中移动或创建文件,请参阅实现共享云端硬盘支持。
复制现有演示文稿
如需复制演示文稿,请使用 Drive API 的 files().copy 方法。
以下示例使用针对演示文稿标题和新的 Drive 文件名称提供的字符串复制现有演示文稿。
Apps 脚本
slides/api/Snippets.gs
/** * 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
slides/snippets/presentations.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
slides/snippets/src/main/java/CopyPresentation.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
slides/snippets/slides_copy_presentation.js
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
slides/snippets/slides_copy_presentation.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
slides/snippets/src/SlidesCopyPresentation.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
slides/snippets/slides_copy_presentation.py
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
slides/snippets/lib/file_snippets.rb
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
请注意,您需要使用适当的 Drive API 作用域来授权该调用。