Показывать индикаторы выполнения в презентации Google Slides

Уровень кодирования : Средний
Продолжительность : 15 минут
Тип проекта : Надстройка редактора

Цели

  • Поймите, что делает решение.
  • Узнайте, что делают службы Apps Script в решении.
  • Настройте сценарий.
  • Запустите сценарий.

Об этом решении

Используйте это решение, чтобы добавить индикатор выполнения в нижнюю часть слайдов презентации.

Снимок экрана: индикатор выполнения надстройки «Редактор слайдов»

Как это работает

Скрипт вычисляет количество слайдов в презентации и добавляет прямоугольник внизу каждого слайда. Скрипт увеличивает ширину каждого прямоугольника, чтобы показать прогресс на слайдах.

Службы сценариев приложений

В этом решении используется следующий сервис:

  • Служба слайдов : получает слайды презентации и добавляет к каждому из них прямоугольную форму.

Предварительные условия

Для использования этого образца необходимы следующие предварительные условия:

  • Учетная запись Google (для учетных записей Google Workspace может потребоваться одобрение администратора).
  • Веб-браузер с доступом в Интернет.

Настройте сценарий

  1. Нажмите следующую кнопку, чтобы скопировать презентацию слайдов с индикатором выполнения . Проект Apps Script для этого решения приложен к презентации.
    Сделать копию
  2. В презентации нажмите Расширения > Индикатор выполнения > Показать индикатор выполнения .
  3. При появлении запроса авторизуйте сценарий. Если на экране согласия OAuth отображается предупреждение «Это приложение не проверено» , продолжайте, выбрав «Дополнительно» > «Перейти к {Имя проекта} (небезопасно)» .

  4. Снова нажмите «Расширения» > «Индикатор выполнения» > «Показать индикатор выполнения» .

  5. Чтобы удалить индикатор выполнения, нажмите Расширения > Индикатор выполнения > Скрыть индикатор выполнения .

Просмотрите код

Чтобы просмотреть код скрипта приложений для этого решения, нажмите «Просмотреть исходный код» ниже:

Посмотреть исходный код

слайды/прогресс/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();
      }
    }
  }
}

Авторы

Этот образец поддерживается Google с помощью экспертов-разработчиков Google.

Следующие шаги

,

Уровень кодирования : Средний
Продолжительность : 15 минут
Тип проекта : Надстройка редактора

Цели

  • Поймите, что делает решение.
  • Узнайте, что делают службы Apps Script в решении.
  • Настройте сценарий.
  • Запустите сценарий.

Об этом решении

Используйте это решение, чтобы добавить индикатор выполнения в нижнюю часть слайдов презентации.

Снимок экрана: индикатор выполнения надстройки «Редактор слайдов»

Как это работает

Скрипт вычисляет количество слайдов в презентации и добавляет прямоугольник внизу каждого слайда. Скрипт увеличивает ширину каждого прямоугольника, чтобы показать прогресс на слайдах.

Службы сценариев приложений

В этом решении используется следующий сервис:

  • Служба слайдов : получает слайды презентации и добавляет к каждому из них прямоугольную форму.

Предварительные условия

Для использования этого образца необходимы следующие предварительные условия:

  • Учетная запись Google (для учетных записей Google Workspace может потребоваться одобрение администратора).
  • Веб-браузер с доступом в Интернет.

Настройте сценарий

  1. Нажмите следующую кнопку, чтобы скопировать презентацию слайдов с индикатором выполнения . Проект Apps Script для этого решения приложен к презентации.
    Сделать копию
  2. В презентации нажмите Расширения > Индикатор выполнения > Показать индикатор выполнения .
  3. При появлении запроса авторизуйте сценарий. Если на экране согласия OAuth отображается предупреждение «Это приложение не проверено» , продолжайте, выбрав «Дополнительно» > «Перейти к {Имя проекта} (небезопасно)» .

  4. Снова нажмите «Расширения» > «Индикатор выполнения» > «Показать индикатор выполнения» .

  5. Чтобы удалить индикатор выполнения, нажмите Расширения > Индикатор выполнения > Скрыть индикатор выполнения .

Просмотрите код

Чтобы просмотреть код скрипта приложений для этого решения, нажмите «Просмотреть исходный код» ниже:

Посмотреть исходный код

слайды/прогресс/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();
      }
    }
  }
}

Авторы

Этот образец поддерживается Google с помощью экспертов-разработчиков Google.

Следующие шаги