Mostrar barras de progreso en un archivo de Presentaciones de Google

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

Nivel de codificación: Intermedio
Duración: 15 minutos
Tipo de proyecto: Complemento del editor

Objetivos

  • Comprenda lo que hace la solución.
  • Comprende lo que hacen los servicios de Apps Script en la solución.
  • Configura la secuencia de comandos.
  • Ejecuta la secuencia de comandos.

Acerca de esta solución

Use esta solución para agregar una barra de progreso a la parte inferior de las diapositivas en su presentación.

Captura de pantalla del complemento de Editor de Presentaciones de la barra de progreso

Cómo funciona

La secuencia de comandos calcula cuántas diapositivas hay en la presentación y agrega una forma rectangular a la parte inferior de cada diapositiva. La secuencia de comandos aumenta el ancho de cada forma rectangular a fin de mostrar el progreso dentro de las diapositivas.

Servicios de Apps Script

En esta solución, se usa el siguiente servicio:

Requisitos previos

Para usar esta muestra, necesitas los siguientes requisitos previos:

  • Una Cuenta de Google (las cuentas de Google Workspace pueden requerir la aprobación del administrador).
  • Un navegador web con acceso a Internet.

Configure la secuencia de comandos

  1. Haz clic en el siguiente botón para hacer una copia de la presentación de la barra de progreso. El proyecto de Apps Script para esta solución se adjunta a la presentación.
    Crear una copia
  2. En la presentación, haz clic en Extensiones > Barra de progreso > Mostrar barra de progreso.
  3. Cuando se te solicite, autoriza la secuencia de comandos. Si la pantalla de consentimiento de OAuth muestra la advertencia This app is not verified, continúa seleccionando Advanced >Go to {Project Name} (no seguro).

  4. Nuevamente, haz clic en Extensiones > Barra de progreso > Mostrar barra de progreso.

  5. Para quitar la barra de progreso, haz clic en Extensiones > Barra de progreso > Ocultar barra de progreso.

Revisa el código

Para revisar el código de Apps Script de esta solución, haz clic en Ver código fuente a continuación:

Ver el código fuente

diapositivas/progreso/progress.gs
/**
 * @OnlyCurrentDoc Adds progress bars to a presentation.
 */
const BAR_ID = 'PROGRESS_BAR_ID';
const BAR_HEIGHT = 10; // px

/**
 * Runs when the add-on is installed.
 * @param {object} e The event parameter for a simple onInstall trigger. To
 *     determine which authorization mode (ScriptApp.AuthMode) the trigger is
 *     running in, inspect e.authMode. (In practice, onInstall triggers always
 *     run in AuthMode.FULL, but onOpen triggers may be AuthMode.LIMITED or
 *     AuthMode.NONE.)
 */
function onInstall(e) {
  onOpen();
}

/**
 * Trigger for opening a presentation.
 * @param {object} e The onOpen event.
 */
function onOpen(e) {
  SlidesApp.getUi().createAddonMenu()
      .addItem('Show progress bar', 'createBars')
      .addItem('Hide progress bar', 'deleteBars')
      .addToUi();
}

/**
 * Create a rectangle on every slide with different bar widths.
 */
function createBars() {
  deleteBars(); // Delete any existing progress bars
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  for (let i = 0; i < slides.length; ++i) {
    const ratioComplete = (i / (slides.length - 1));
    const x = 0;
    const y = presentation.getPageHeight() - BAR_HEIGHT;
    const barWidth = presentation.getPageWidth() * ratioComplete;
    if (barWidth > 0) {
      const bar = slides[i].insertShape(SlidesApp.ShapeType.RECTANGLE, x, y,
          barWidth, BAR_HEIGHT);
      bar.getBorder().setTransparent();
      bar.setLinkUrl(BAR_ID);
    }
  }
}

/**
 * Deletes all progress bar rectangles.
 */
function deleteBars() {
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  for (let i = 0; i < slides.length; ++i) {
    const elements = slides[i].getPageElements();
    for (const el of elements) {
      if (el.getPageElementType() === SlidesApp.PageElementType.SHAPE &&
        el.asShape().getLink() &&
        el.asShape().getLink().getUrl() === BAR_ID) {
        el.remove();
      }
    }
  }
}

Colaboradores

Google mantiene esta muestra con la ayuda de los expertos de Google Developers.

Próximos pasos