Muestra barras de progreso en una presentación de Google

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

Objetivos

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

Acerca de esta solución

Usa esta solución para agregar una barra de progreso al final de las diapositivas en tu presentación.

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

Cómo funciona

El guion calcula cuántas diapositivas hay en la presentación y agrega una forma rectangular en la parte inferior de cada diapositiva. La secuencia de comandos aumenta el ancho para cada forma de rectángulo para 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 (es posible que las cuentas de Google Workspace requieren la aprobación del administrador).
  • Un navegador web con acceso a Internet

Configura la secuencia de comandos

  1. Haz clic en el siguiente botón para crear una copia de las diapositivas de la barra de progreso. presentación. El proyecto Apps Script para que esta solución está adjunta a la presentación.
    Crear una copia
  2. En la presentación, haz clic en Extensiones. > Barra de progreso > Mostrar la barra de progreso:
  3. Cuando se te solicite, autoriza la secuencia de comandos. Si la pantalla de consentimiento de OAuth muestra la advertencia Esta app no está verificada, para continuar, selecciona Avanzado > Ve a {Project Name} (no seguro).

  4. Una vez más, 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 Consulta el código fuente a continuación:

Ver el código fuente

diapositivas/progreso/progreso.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