Je crois que votre objectif est le suivant.
- Vous souhaitez exporter chaque page d'un document Google Slides sous forme de fichier PDF.
- Vous souhaitez y parvenir en utilisant le script de Google Apps.
Dans ce cas, que diriez-vous du flux suivant ?
- Récupérer toutes les diapositives de la source Google Slides.
- Créer une diapositive temporelle sur Google.
- Exporter chaque page au format PDF.
- Supprimez les diapositives temporelles de Google.
Lorsque ce flux est reflété dans un script, il se présente comme suit.
Exemple de script :
Veuillez copier et coller le script suivant dans l'éditeur script de Google Slides, et exécuter la fonction myFunction
. Le script est alors exécuté.
function myFunction() {
const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.
// 1. Retrieve all slides from the source Google Slides.
const slide = SlidesApp.getActivePresentation();
const srcSlides = slide.getSlides();
// 2. Create a temporal Google Slides.
let temp = SlidesApp.create("temp");
const id = temp.getId();
const file = DriveApp.getFileById(id);
const folder = DriveApp.getFolderById(folderId);
// 3. Export each page as a PDF file.
srcSlides.forEach((s, i) => {
temp.appendSlide(s);
temp.getSlides()[0].remove();
temp.saveAndClose();
folder.createFile(file.getBlob().setName(`page_${i + 1}.pdf`));
temp = SlidesApp.openById(id);
});
// 4. Remove the temporal Google Slides.
file.setTrashed(true);
}
- Dans ce cas, les noms de fichiers de chaque fichier PDF sont les suivants
page_1.pdf
, page_2.pdf
.
Remarque :
-
Si vous souhaitez exporter chaque diapositive sous forme de fichier JPEG au lieu d'un fichier PDF, vous pouvez également utiliser l'exemple suivant script. Dans ce cas, l'API des diapositives est utilisée. Donc, avant d'exécuter le script, Veuillez activer l'API Slides dans les services Google avancés .
function myFunction() {
const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.
// 1. Retrieve all slides from the source Google Slides.
const slide = SlidesApp.getActivePresentation();
const id = slide.getId();
const srcSlides = slide.getSlides();
// 2. Export each page as a JPEG file.
const folder = DriveApp.getFolderById(folderId);
srcSlides.forEach((s, i) => {
const url = Slides.Presentations.Pages.getThumbnail(id, s.getObjectId(), {"thumbnailProperties.mimeType": "PNG"}).contentUrl;
const blob = UrlFetchApp.fetch(url).getAs(MimeType.JPEG);
folder.createFile(blob.setName(`page_${i + 1}.jpg`));
});
}
- Dans ce cas, les noms de fichiers de chaque fichier JPEG sont les suivants
page_1.jpg
, page_2.jpg
.
Références :
Ajouté :
D'après la réponse suivante de l'OP,
Mon fichier Slide a une mise en page différente de celle par défaut, de sorte que lorsque j'applique votre code, les fichiers PDF générés ont la taille par défaut, ce qui donne des fichiers déformés. Comment puis-je résoudre ce problème ?
En fait, c'est ma faute. Je veux dire que mon fichier Google Slide original a une mise en page différente (disons 14 x 18 cm). Votre code fonctionne, mais les fichiers PDF générés ont la mise en page par défaut d'une diapositive.
D'après les réponses ci-dessus, il semble que la taille de la page ne soit pas celle par défaut. Dans ce cas, j'aimerais proposer d'utiliser la taille de la page de la diapositive Google originale. L'exemple de script est le suivant.
Exemple de script :
function myFunction2() {
const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.
// 1. Retrieve all slides from the source Google Slides.
const slide = SlidesApp.getActivePresentation();
const srcId = slide.getId();
const srcSlides = slide.getSlides();
// 2. Create a temporal Google Slides.
const file = DriveApp.getFileById(srcId).makeCopy("temp");
const id = file.getId();
let temp = SlidesApp.openById(id);
temp.getSlides().forEach((e, i) => {
if (i != 0) e.remove();
});
const folder = DriveApp.getFolderById(folderId);
// 3. Export each page as a PDF file.
srcSlides.forEach((s, i) => {
temp.appendSlide(s);
temp.getSlides()[0].remove();
temp.saveAndClose();
folder.createFile(file.getBlob().setName(`page_${i + 1}.pdf`));
temp = SlidesApp.openById(id);
});
// 4. Remove the temporal Google Slides.
file.setTrashed(true);
}