У меня длинный текст с элементами списка, которые я хочу добавить в Google Slides с помощью скрипта Apps. Поскольку длина текста и отдельных элементов списка могут различаться, мне нужно создать несколько слайдов, чтобы охватить весь текст.
Для этого я хотел сделать следующее:
- Если текст оставлен, создайте новый слайд с текстовым полем (или таблицей), который охватывает всю страницу
- Добавить элементы списка в контейнер, если они все еще помещаются в него
- Если текст оставлен, начните заново с нового слайда, пока весь текст не будет помещен
Однако это не работает:
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 с одной строкой на элемент.
Заранее спасибо за любые идеи.