إنشاء العروض التقديمية وإدارتها

تصف هذه الصفحة كيفية أداء بعض مهام عالية المستوى تتضمن عروض تقديمية، مثل:

  • إنشاء عرض تقديمي
  • نسخ عرض تقديمي حالي

تصف الفقرات التالية هذه المهام بالتفصيل.

إنشاء عرض تقديمي فارغ

لإنشاء عرض تقديمي، استخدِم طريقة إنشاء في مجموعة العروض التقديمية، كما هو موضّح في المثال التالي.

يؤدي هذا المثال إلى إنشاء عرض تقديمي فارغ بعنوان محدد.

برمجة تطبيقات

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);
  }
};

البدء

الشرائح/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_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_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_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 Drive

لا يتوفر خيار لإنشاء عرض تقديمي مباشرةً ضمن مجلد محدد في Drive باستخدام Google Slides API. يتم تلقائيًا حفظ العرض التقديمي الذي تم إنشاؤه في المجلد الجذر للمستخدم على Drive.

ومع ذلك، هناك بديلان لحفظ ملف في مجلد Drive:

  • بعد إنشاء العرض التقديمي، انقله إلى مجلد محدَّد باستخدام طريقة files.update في Drive API. لمزيد من المعلومات عن نقل الملفات، يمكنك الاطّلاع على نقل الملفات بين المجلدات.
  • إضافة عرض تقديمي فارغ إلى مجلد باستخدام طريقة files.create إلى Drive API، مع تحديد application/vnd.google-apps.presentation على أنها mimeType لمزيد من المعلومات حول إنشاء الملفات، يُرجى الاطِّلاع على إنشاء ملف في مجلد.

لإجراء أي من الخيارين البديلين، عليك إضافة نطاقات Drive API المناسبة للسماح بالمكالمة.

لنقل ملف أو إنشائه داخل مجلد في مساحة تخزين سحابي مشتركة، يُرجى الاطّلاع على مقالة تنفيذ دعم مساحة التخزين السحابي المشتركة.

نسخ عرض تقديمي حالي

لنسخ عرض تقديمي، استخدِم طريقة files().copy في Drive API.

ينسخ المثال التالي عرضًا تقديميًا حاليًا، باستخدام سلسلة متوفرة لكل من عنوان العرض التقديمي واسم ملف Drive الجديد.

برمجة تطبيقات

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);
  }
};

البدء

الشرائح/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_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 المناسب للموافقة على الاستدعاء.