Servicio avanzado de Presentaciones

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

El servicio de Presentaciones avanzadas te permite acceder a la API de Presentaciones con Apps Script. Este servicio permite que las secuencias de comandos lean y editen contenido en Presentaciones de Google.

Reference

Para obtener información detallada sobre este servicio, consulta la documentación de referencia de la API de Presentaciones. Al igual que todos los servicios avanzados en Apps Script, el servicio de Presentaciones avanzado usa los mismos objetos, métodos y parámetros que la API pública. Para obtener más información, consulta Cómo se determinan las firmas de los métodos.

Para informar problemas y buscar otro tipo de asistencia, consulta la guía de asistencia de Presentaciones.

Ejemplo de código

El siguiente código de muestra utiliza la versión 1 de la API.

Crear una presentación nueva

En el siguiente ejemplo, se muestra cómo crear una presentación nueva con el servicio avanzado de Presentaciones. Es equivalente a la muestra de recetas Crea una presentación nueva.

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

Crear una diapositiva nueva

En el siguiente ejemplo, se muestra cómo crear una diapositiva nueva en una presentación, en un índice específico y con un diseño predefinido. Es equivalente a la muestra de recetas Crea una diapositiva nueva.

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

Leer los ID de objeto de los elementos de la página

En el siguiente ejemplo, se muestra cómo recuperar los ID de objeto para cada elemento de página de una diapositiva específica con una máscara de campo. Es equivalente a la muestra de la receta para leer los ID de objeto de elemento de una página.

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

Agregar un cuadro de texto nuevo

En el siguiente ejemplo, se muestra cómo agregar un nuevo cuadro de texto a una diapositiva y agregarle texto. Es equivalente a la muestra de receta Agregar un texto a una diapositiva.

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

Dar formato al texto con forma

En el siguiente ejemplo, se muestra cómo dar formato al texto de una forma, actualizar su color, fuente y subrayar el texto. Es equivalente a la muestra de receta de Formato de texto en una forma o cuadro de texto.

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

Prácticas recomendadas

Actualizaciones por lotes

Cuando uses el servicio avanzado de Presentaciones, combina varias solicitudes en un arreglo en lugar de llamar a batchUpdate en un bucle.

No: Llama a batchUpdate de manera indefinida.

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

Sugerencia: Llama a batchUpdate con un arreglo de actualizaciones.

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