Google脚本
function autoFlyerGenerator() {
const name_file = "FILE_NAME";
// Template file in Google slide
const ppt_file = DriveApp.getFileById(##SLIDE_ID##);
// Temporal folder to store a temporal slide file
const temp_folder = DriveApp.getFolderById(##TEMP_FOLDER_ID##);
// PDF folder
const pdf_folder = DriveApp.getFolderById(##PDF_FOLDER_ID##);
// My current spreadsheet
const ss = SpreadsheetApp.getActive();
const values_ss = ss.getDataRange().getValues();
const temp_ppt = ppt_file.makeCopy(temp_folder).setName(name_file);
const open_temp_ppt = SlidesApp.openById(temp_ppt.getId());
const slides = open_temp_ppt.getSlides();
// First for-loop iterate over all rows (without the header)
// Second for-loop iterate over all columns
for (var index = 0; index < ss.getLastRow()-1; index++){
for (var col = 0; col < ss.getLastColumn(); col++){
slides[index].replaceAllText(values_ss[0][col], values_ss[index+1][col])
}
}
open_temp_ppt.saveAndClose();
// This code block create a single PDF of the slide
const pdfContentBlob = temp_ppt.getBlob();
pdf_folder.createFile(pdfContentBlob).setName(name_file);
}更新
发布于 2021-05-17 02:21:48
我相信你的目标如下。
在这种情况下,下面的流如何?
当这个流被反射到一个脚本中时,如下所示。
示例脚本:
请将以下脚本复制并粘贴到Google幻灯片的脚本编辑器中,并运行函数myFunction。这样,脚本就可以运行了。
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);
}page_1.pdf、page_2.pdf。注意:
- In this case, the filenames of each JPEG file are like `page_1.jpg`, `page_2.jpg`.参考文献:
添加:
从下一次行动的回复来看,
我的幻灯片文件的页面设置与默认设置不同,所以当应用您的代码时,生成的PDF文件以默认大小结束,从而产生扭曲的文件。我该怎么解决这个问题?实际上,这是我的错。我的意思是,我的原始谷歌幻灯片文件有一个不同的页面设置(假设14x18厘米)。您的代码可以工作,但是生成的PDF文件具有幻灯片的默认页面设置。
从上面的答复来看,页面大小似乎不是默认的。在这种情况下,我建议使用原来谷歌幻灯片的页面大小。示例脚本如下所示。
示例脚本:
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);
}https://stackoverflow.com/questions/67562994
复制相似问题