本頁面說明如何執行涉及簡報的特定高階工作,例如:
- 建立簡報
- 複製現有簡報
以下段落將詳細說明這些工作。
建立空白簡報
如要建立簡報,請在 presentations 集合上使用 create 方法,如以下範例所示。
這個範例會建立含有指定標題的空白簡報。
Apps Script
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")
小茹
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 直接在指定的 Google 雲端硬碟資料夾中建立簡報。根據預設,系統會將建立的簡報儲存到使用者在雲端硬碟中的根資料夾。
不過,有 2 種方法可以將檔案儲存到雲端硬碟資料夾:
- 建立簡報後,請使用 Drive API 的 files.update 方法將其移至特定資料夾。如要進一步瞭解如何移動檔案,請參閱「在資料夾之間移動檔案」。
- 使用 Drive API 的 files.create 方法,將空白簡報新增至資料夾,並指定
application/vnd.google-apps.presentation
做為mimeType
。如要進一步瞭解如何建立檔案,請參閱「在資料夾中建立檔案」一文。
無論選擇哪種方法,都必須新增適當的 Drive API 範圍,才能授權呼叫。
如要移動或建立共用雲端硬碟資料夾中的檔案,請參閱「實作共用雲端硬碟支援功能」。
複製現有簡報
如要複製簡報,請使用 Drive API 的 files().copy 方法。
以下範例會複製現有簡報,並使用提供的字串做為簡報標題和新雲端硬碟檔案的名稱。
Apps Script
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
小茹
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 範圍來授權呼叫。