Pokazywanie pasków postępu w prezentacji Google

Poziom kodowania: średnio zaawansowany
Czas trwania: 15 minut
Typ projektu: dodatek do Edytora

Cele

  • Dowiedz się, do czego służy dane rozwiązanie.
  • dowiedzieć się, jak usługi Apps Script w danym rozwiązaniu działają.
  • Skonfiguruj skrypt.
  • Uruchom skrypt.

Informacje o rozwiązaniu

Dzięki temu rozwiązaniu możesz dodać pasek postępu u dołu slajdów w prezentacji.

Zrzut ekranu przedstawiający dodatek do edytora Prezentacji na pasku postępu

Jak to działa

Skrypt oblicza liczbę slajdów w prezentacji i dodaje do ich dołu prostokątny kształt. Skrypt zwiększa szerokość prostokąta, by pokazać postęp na slajdach.

Usługi Apps Script

To rozwiązanie korzysta z następującej usługi:

  • Usługa Prezentacji – pobiera slajdy z prezentacji i do każdego z nich dodaje prostokątny kształt.

Wymagania wstępne

Aby móc korzystać z tego przykładu, musisz spełnić następujące warunki wstępne:

  • Konto Google (konta Google Workspace mogą wymagać zatwierdzenia przez administratora).
  • Przeglądarka z dostępem do internetu.

Konfigurowanie skryptu

  1. Kliknij przycisk poniżej, aby utworzyć kopię prezentacji z paskiem postępu. Projekt Apps Script dla tego rozwiązania jest dołączony do prezentacji.
    Utwórz kopię
  2. W prezentacji kliknij Rozszerzenia > Pasek postępu > Pokaż pasek postępu.
  3. Gdy pojawi się odpowiedni komunikat, autoryzuj skrypt. Jeśli na ekranie zgody OAuth pojawi się ostrzeżenie Ta aplikacja nie jest zweryfikowana, wybierz Zaawansowane > Otwórz {Project Name} (unsafe).

  4. Ponownie kliknij Rozszerzenia > Pasek postępu > Pokaż pasek postępu.

  5. Aby usunąć pasek postępu, kliknij Rozszerzenia > Pasek postępu > Ukryj pasek postępu.

Sprawdź kod

Aby sprawdzić kod Apps Script tego rozwiązania, kliknij Wyświetl kod źródłowy poniżej:

Pokaż kod źródłowy

slajdy/postęp/postęp.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();
      }
    }
  }
}

Współtwórcy

Ta próbka jest opracowywana przez Google przy pomocy ekspertów Google Developers.

Dalsze kroki