Вопрос или проблема
Я пытаюсь преобразовать Google Slides в формат PDF или IMAGE, и у меня много проблем с поиском решения, которое не устарело на 10 лет и все еще работает.
Вот как я это сделал :
Не имеет значения, каким путем вы идете, ВАМ НУЖНО добавить сервисы “Google Slides API” !!
Если скрипт связан с презентацией, вы можете использовать следующее :
ДЛЯ PDF
function toPDF() {
const folderId = "1-rCYyDgTzOV0FKt2gdh8dtaB1hSi1JN-";
const presentation = SlidesApp.getActivePresentation();
const slides = presentation.getSlides();
let temp = SlidesApp.create("Временная");
const id = temp.getId();
const file = DriveApp.getFileById(id);
const folder = DriveApp.getFolderById(folderId);
slides.forEach((slide, i) => {
temp.appendSlide(slide);
temp.getSlides()[0].remove();
temp.saveAndClose();
folder.createFile(file.getBlob().setName(i + 1));
temp = SlidesApp.openById(id);
});
file.setTrashed(true);
}
ДЛЯ ИЗОБРАЖЕНИЯ
function toPNG() {
const folderId = "1G6E_BZeilLJ1_f36xpwFqlthXblGOI3h";
const presentation = SlidesApp.getActivePresentation();
const id = presentation.getId();
const slides = presentation.getSlides();
const folder = DriveApp.getFolderById(folderId);
const options = {"thumbnailProperties.mimeType": "PNG" };
slides.forEach((slide, i) => {
const url = Slides.Presentations.Pages.getThumbnail(
id,
slide.getObjectId(),
options
).contentUrl;
const blob = UrlFetchApp.fetch(url).getAs(MimeType.PNG);
folder.createFile(blob.setName(i + 1));
});
}
Если вы хотите использовать код из более крупного скрипта (вне скрипта, связанного с документом Google Slides), тогда вы можете использовать это :
ДЛЯ ИЗОБРАЖЕНИЯ :
/**
* Преобразует все слайды презентации Google Slides (указанной по ее ID) в изображения PNG
* и сохраняет их в указанную папку.
*
* @param {string} slideFileId - ID презентации Google Slides для преобразования.
* @param {string} folderId - ID папки, в которую должны быть сохранены изображения PNG.
*/
function convertSlideToPNG(slideFileId, folderId) {
// Получаем указанную презентацию по ее ID
const presentation = SlidesApp.openById(slideFileId);
// Получаем все слайды в презентации
const slides = presentation.getSlides();
// Получаем целевую папку по ее ID
const folder = DriveApp.getFolderById(folderId);
// Определяем параметры для получения слайда в формате PNG
const options = { "thumbnailProperties.mimeType": "PNG" };
// Цикл по каждому слайду и генерируем его миниатюру
slides.forEach((slide, i) => {
const url = Slides.Presentations.Pages.getThumbnail(
slideFileId,
slide.getObjectId(),
options
).contentUrl; // Получаем URL для миниатюры PNG
const blob = UrlFetchApp.fetch(url).getAs(MimeType.PNG); // Получаем изображение в формате PNG
folder.createFile(blob.setName('Слайд_' + (i + 1) + '.png')); // Сохраняем PNG в папке с названием на основе слайда
});
}
Ответ или решение
Экспорт Google Slides в PDF или изображение: Полное руководство
Экспорт презентаций из Google Slides в такие форматы, как PDF или изображения, может показаться сложной задачей, особенно если вы не знаете, какие инструменты использовать, и как они работают. В этом руководстве мы рассмотрим несколько стратегий для достижения этой цели с использованием Google Apps Script и Google Slides API.
Подготовка к экспорту
-
Активируйте Google Slides API: Для начала убедитесь, что у вас активирован Google Slides API. Это необходимо для работы с API и выполнения действий над слайдами. Вы можете сделать это через Google Cloud Console, добавив проект и включив API.
-
Создание скрипта: Перейдите в Google Slides, откройте вашу презентацию и перейдите в меню
Расширения
->Apps Script
. Это откроет редактор, где вы можете добавить свой код.
Экспорт в PDF
Экспорт слайдов в PDF можно выполнить с помощью следующего скрипта:
function toPDF() {
const folderId = "1-rCYyDgTzOV0FKt2gdh8dtaB1hSi1JN-"; // ID папки для сохранения PDF
const presentation = SlidesApp.getActivePresentation();
const slides = presentation.getSlides();
let temp = SlidesApp.create("Temporary"); // Создаем временную презентацию
const id = temp.getId();
const file = DriveApp.getFileById(id);
const folder = DriveApp.getFolderById(folderId);
slides.forEach((slide, i) => {
temp.appendSlide(slide); // Добавляем слайд во временную презентацию
temp.getSlides()[0].remove(); // Удаляем пустой слайд
temp.saveAndClose();
folder.createFile(file.getBlob().setName(i + 1)); // Сохраняем файл в указанной папке
temp = SlidesApp.openById(id); // Открываем временную презентацию для добавления следующего слайда
});
file.setTrashed(true); // Удаляем временный файл
}
Экспорт в Изображения (PNG)
Чтобы экспортировать слайды как изображения, используйте следующий код:
function toPNG() {
const folderId = "1G6E_BZeilLJ1_f36xpwFqlthXblGOI3h"; // ID папки для сохранения изображений
const presentation = SlidesApp.getActivePresentation();
const id = presentation.getId();
const slides = presentation.getSlides();
const folder = DriveApp.getFolderById(folderId);
const options = { "thumbnailProperties.mimeType": "PNG" }; // Устанавливаем формат PNG
slides.forEach((slide, i) => {
const url = Slides.Presentations.Pages.getThumbnail(
id,
slide.getObjectId(),
options
).contentUrl; // Получаем URL изображения
const blob = UrlFetchApp.fetch(url).getAs(MimeType.PNG); // Загружаем изображение как PNG
folder.createFile(blob.setName(i + 1)); // Сохраняем файл в указанной папке
});
}
Альтернативный подход для изображений
Если вам нужно выполнить экспорт слайдов из другой презентации, воспользуйтесь следующим скриптом:
function convertSlideToPNG(slideFileId, folderId) {
const presentation = SlidesApp.openById(slideFileId);
const slides = presentation.getSlides();
const folder = DriveApp.getFolderById(folderId);
const options = { "thumbnailProperties.mimeType": "PNG" };
slides.forEach((slide, i) => {
const url = Slides.Presentations.Pages.getThumbnail(
slideFileId,
slide.getObjectId(),
options
).contentUrl; // Получаем URL для PNG
const blob = UrlFetchApp.fetch(url).getAs(MimeType.PNG); // Получаем изображение в формате PNG
folder.createFile(blob.setName('Slide_' + (i + 1) + '.png')); // Сохраняем PNG с именем соответствующим номеру слайда
});
}
Заключение
Экспорт слайдов из Google Slides в PDF или изображения стал значительно более доступным благодаря простоте использования Google Apps Script и API. Для достижения наилучших результатов убедитесь, что правильно настроены разрешения и у вас есть доступ к Google Cloud Console.
Если вам понадобятся дополнительные функции или есть вопросы о настройках, не стесняйтесь обращаться к документации Google или выпускать запрос на специализированных форумах.