Распространение длинного текста по нескольким слайдам Google с помощью скрипта Apps - PullRequest
0 голосов
/ 09 января 2019

У меня длинный текст с элементами списка, которые я хочу добавить в Google Slides с помощью скрипта Apps. Поскольку длина текста и отдельных элементов списка могут различаться, мне нужно создать несколько слайдов, чтобы охватить весь текст.

Для этого я хотел сделать следующее:

  1. Если текст оставлен, создайте новый слайд с текстовым полем (или таблицей), который охватывает всю страницу
  2. Добавить элементы списка в контейнер, если они все еще помещаются в него
  3. Если текст оставлен, начните заново с нового слайда, пока весь текст не будет помещен

Однако это не работает:

  var slides = SlidesApp.openById("...");
  var pageHeight = slides.getPageHeight();
  var stringList = ["Long text 1", "Long text 2", "Long text 3"];
  var page = 0;

  while (stringList.length > 0) {
    var container = slides.getSlides()[page].getShapes()[0]; //some text box
    container.getText().clear();

    while (container.getHeight() < pageHeight && stringList.length > 0) {
      container.getText().appendText(stringList.shift());
    }
    page++;
  }
}

Теперь у меня проблема в том, что я не нашел способа получить фактическую высоту элемента (который потребляет текст), чтобы проверить, помещается ли текст на страницу соответственно в контейнер. Этот скрипт будет заполнять одно текстовое поле навсегда, так как getHeight() игнорирует высоту текста. Ячейки таблицы растут вместе с текстом, но, кажется, имеют только минимальная высота .

Итак, я ищу способ разбить мой текст на столько слайдов, сколько необходимо. Знаете ли вы какое-либо свойство, метод или другой подход, чтобы узнать фактическую высоту текста в текстовом поле или ячейке таблицы?

Конечно, это не будет проблемой для Google Doc, но мне также нужно добавить какой-нибудь стиль с фигурами, фонами и так далее, почему, к сожалению, это не вариант. Элементы списка взяты из электронной таблицы Google с одной строкой на элемент.

Заранее спасибо за любые идеи.

...