خدمة "العروض التقديمية من Google" المتقدِّمة

تتيح لك خدمة "العروض التقديمية من Google" المتقدمة الوصول إلى واجهة برمجة تطبيقات العروض التقديمية باستخدام "برمجة التطبيقات". تسمح هذه الخدمة للنصوص البرمجية بقراءة المحتوى وتعديله في "العروض التقديمية من Google".

مَراجع

للحصول على معلومات تفصيلية حول هذه الخدمة، يُرجى الاطّلاع على المستندات المرجعية الخاصة بواجهة برمجة تطبيقات "العروض التقديمية من Google". مثل جميع الخدمات المتقدمة في برمجة التطبيقات، تستخدم خدمة "العروض التقديمية من Google" المتقدمة الكائنات والطرق والمعلمات نفسها مثل واجهة برمجة التطبيقات العامة. لمزيد من المعلومات، يُرجى الاطِّلاع على كيفية تحديد توقيعات الطرق.

للإبلاغ عن المشاكل والعثور على خيارات دعم أخرى، يُرجى الاطّلاع على دليل الدعم في "العروض التقديمية من Google".

نموذج التعليمات البرمجية

يستخدم الرمز النموذجي أدناه الإصدار 1 من واجهة برمجة التطبيقات.

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

يوضح المثال التالي كيفية إنشاء عرض تقديمي جديد باستخدام خدمة العروض التقديمية المتقدمة. هذا الخيار يعادل نموذج وصفة إنشاء عرض تقديمي جديد.

advanced/slides.gs
/**
 * Create a new presentation.
 * @return {string} presentation Id.
 * @see https://developers.google.com/slides/api/reference/rest/v1/presentations/create
 */
function createPresentation() {
  try {
    const presentation =
      Slides.Presentations.create({'title': 'MyNewPresentation'});
    console.log('Created presentation with ID: ' + presentation.presentationId);
    return presentation.presentationId;
  } catch (e) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', e.message);
  }
}

إنشاء شريحة جديدة

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

advanced/slides.gs
/**
 * Create a new slide.
 * @param {string} presentationId The presentation to add the slide to.
 * @return {Object} slide
 * @see https://developers.google.com/slides/api/reference/rest/v1/presentations/batchUpdate
 */
function createSlide(presentationId) {
  // You can specify the ID to use for the slide, as long as it's unique.
  const pageId = Utilities.getUuid();

  const requests = [{
    'createSlide': {
      'objectId': pageId,
      'insertionIndex': 1,
      'slideLayoutReference': {
        'predefinedLayout': 'TITLE_AND_TWO_COLUMNS'
      }
    }
  }];
  try {
    const slide =
      Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    console.log('Created Slide with ID: ' + slide.replies[0].createSlide.objectId);
    return slide;
  } catch (e) {
    // TODO (developer) - Handle Exception
    console.log('Failed with error %s', e.message);
  }
}

قراءة أرقام تعريف كائنات عناصر الصفحة

يوضّح المثال التالي كيفية استرداد أرقام تعريف الكائنات لكل عنصر من عناصر الصفحة في شريحة معيّنة باستخدام قناع حقل. ويعادل هذا الرمز نموذج وصفة قراءة معرّفات كائنات العناصر من صفحة.

advanced/slides.gs
/**
 * Read page element IDs.
 * @param {string} presentationId The presentation to read from.
 * @param {string} pageId The page to read from.
 * @return {Object} response
 * @see https://developers.google.com/slides/api/reference/rest/v1/presentations.pages/get
 */
function readPageElementIds(presentationId, pageId) {
  // You can use a field mask to limit the data the API retrieves
  // in a get request, or what fields are updated in an batchUpdate.
  try {
    const response = Slides.Presentations.Pages.get(
        presentationId, pageId, {'fields': 'pageElements.objectId'});
    console.log(response);
    return response;
  } catch (e) {
    // TODO (developer) - Handle Exception
    console.log('Failed with error %s', e.message);
  }
}

إضافة مربّع نص جديد

يوضح المثال التالي كيفية إضافة مربع نص جديد إلى شريحة وإضافة نص إليها. هذا الخيار يعادل إضافة مربع نص إلى عيّنة من وصفات الطعام.

advanced/slides.gs
/**
 * Add a new text box with text to a page.
 * @param {string} presentationId The presentation ID.
 * @param {string} pageId The page ID.
 * @return {Object} response
 * @see https://developers.google.com/slides/api/reference/rest/v1/presentations/batchUpdate
 */
function addTextBox(presentationId, pageId) {
  // You can specify the ID to use for elements you create,
  // as long as the ID is unique.
  const pageElementId = Utilities.getUuid();

  const requests = [{
    'createShape': {
      'objectId': pageElementId,
      'shapeType': 'TEXT_BOX',
      'elementProperties': {
        'pageObjectId': pageId,
        'size': {
          'width': {
            'magnitude': 150,
            'unit': 'PT'
          },
          'height': {
            'magnitude': 50,
            'unit': 'PT'
          }
        },
        'transform': {
          'scaleX': 1,
          'scaleY': 1,
          'translateX': 200,
          'translateY': 100,
          'unit': 'PT'
        }
      }
    }
  }, {
    'insertText': {
      'objectId': pageElementId,
      'text': 'My Added Text Box',
      'insertionIndex': 0
    }
  }];
  try {
    const response =
      Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    console.log('Created Textbox with ID: ' +
      response.replies[0].createShape.objectId);
    return response;
  } catch (e) {
    // TODO (developer) - Handle Exception
    console.log('Failed with error %s', e.message);
  }
}

تنسيق نص الشكل

يوضح المثال التالي كيفية تنسيق نص الشكل وتحديث لونه وخطه وتسطير نصه. يعادل هذا الخيار عيّنة الوصفة تنسيق النص في شكل أو مربع نص.

advanced/slides.gs
/**
 * Format the text in a shape.
 * @param {string} presentationId The presentation ID.
 * @param {string} shapeId The shape ID.
 * @return {Object} replies
 * @see https://developers.google.com/slides/api/reference/rest/v1/presentations/batchUpdate
 */
function formatShapeText(presentationId, shapeId) {
  const requests = [{
    'updateTextStyle': {
      'objectId': shapeId,
      'fields': 'foregroundColor,bold,italic,fontFamily,fontSize,underline',
      'style': {
        'foregroundColor': {
          'opaqueColor': {
            'themeColor': 'ACCENT5'
          }
        },
        'bold': true,
        'italic': true,
        'underline': true,
        'fontFamily': 'Corsiva',
        'fontSize': {
          'magnitude': 18,
          'unit': 'PT'
        }
      },
      'textRange': {
        'type': 'ALL'
      }
    }
  }];
  try {
    const response =
      Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    return response.replies;
  } catch (e) {
    // TODO (developer) - Handle Exception
    console.log('Failed with error %s', e.message);
  }
}

أفضل الممارسات

التحديثات المجمّعة

عند استخدام "خدمة العروض التقديمية المتقدمة"، يمكنك دمج طلبات متعددة في مصفوفة بدلاً من استدعاء batchUpdate في حلقة تكرار.

ما ننصحك بتجنّبه: يمكنك طلب "batchUpdate" بشكل متكرّر.

var titles = ["slide 1", "slide 2"];
for (var i = 0; i < titles.length; i++) {
  Slides.Presentations.batchUpdate(preso, {
    requests: [{
      createSlide: ...
    }]
  });
}

الإجراءات المطلوبة: يمكنك طلب "batchUpdate" لإطلاعك على مجموعة من التعديلات.

var requests = [];
var titles = ["slide 1", "slide 2"];
for (var i = 0; i < titles.length; i++) {
  requests.push({ createSlide: ... });
}

Slides.Presentations.batchUpdate(preso, {
  requests: requests
});