Servizio Presentazioni avanzato

Il servizio Presentazioni avanzato ti consente di accedere all'API Presentazioni utilizzando Apps Script. Questo servizio consente agli script di leggere e modificare i contenuti in Presentazioni Google.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la documentazione di riferimento per l'API Presentazioni. Come tutti i servizi avanzati di Apps Script, il servizio avanzato di Presentazioni utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per saperne di più, vedi Come vengono determinate le firme dei metodi.

Per segnalare problemi e trovare ulteriore assistenza, consulta la guida di assistenza di Presentazioni.

Codice di esempio

Il codice campione riportato di seguito utilizza la versione 1 dell'API.

Crea una nuova presentazione

L'esempio seguente mostra come creare una nuova presentazione utilizzando il servizio avanzato di Presentazioni. Equivale all'esempio di ricetta Crea una nuova presentazione.

Advanced/Diapositive.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'});
    Logger.log('Created presentation with ID: ' + presentation.presentationId);
    return presentation.presentationId;
  } catch (e) {
    // TODO (developer) - Handle exception
    Logger.log('Failed with error %s', e.message);
  }
}

Crea una nuova diapositiva

L'esempio seguente mostra come creare una nuova diapositiva in una presentazione, in un indice specifico e con layout predefinito. Equivale all'esempio di ricetta Crea una nuova diapositiva.

Advanced/Diapositive.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);
    Logger.log('Created Slide with ID: ' + slide.replies[0].createSlide.objectId);
    return slide;
  } catch (e) {
    // TODO (developer) - Handle Exception
    Logger.log('Failed with error %s', e.message);
  }
}

Leggi gli ID oggetto degli elementi di pagina

L'esempio seguente mostra come recuperare gli ID oggetto per ogni elemento di pagina in una diapositiva specifica utilizzando una maschera di campo. Equivale all'esempio di ricetta Lettura elementi ID oggetto da una pagina.

Advanced/Diapositive.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'});
    Logger.log(response);
    return response;
  } catch (e) {
    // TODO (developer) - Handle Exception
    Logger.log('Failed with error %s', e.message);
  }
}

Aggiungi una nuova casella di testo

L'esempio seguente mostra come aggiungere una nuova casella di testo a una diapositiva e aggiungervi testo. Equivale all'esempio di ricetta Aggiungi una casella di testo a una diapositiva.

Advanced/Diapositive.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);
    Logger.log('Created Textbox with ID: ' +
      response.replies[0].createShape.objectId);
    return response;
  } catch (e) {
    // TODO (developer) - Handle Exception
    Logger.log('Failed with error %s', e.message);
  }
}

Formatta il testo di forma

Nel seguente esempio viene mostrato come formattare il testo di una forma, aggiornandone il colore, il carattere e sottolineando il testo. Equivale all'esempio di ricetta Formatta il testo in una forma o in una casella di testo.

Advanced/Diapositive.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
    Logger.log('Failed with error %s', e.message);
  }
}

Best practice

Aggiornamenti collettivi

Quando utilizzi il servizio avanzato di Presentazioni, combina più richieste in un array anziché chiamare batchUpdate in un loop.

Don't: chiama batchUpdate in loop.

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

Do: chiama batchUpdate con una serie di aggiornamenti.

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