Javascript 如何将谷歌的每张幻灯片转换为PDF和JPG格式? 谷歌应用程序脚本 我想为谷歌幻灯片文件(包含文字和图形的普通幻灯片)的每张幻灯片创建PDF文件 我回顾了过去的问题,找到了一个生成PDF文件的解决方案,但将幻灯片作为图像(我需要能够在这些PDF中搜索单词) 另一个解决方案应用于转换电子表格->PDF,但它也不适用于我的案例
Javascript 如何将谷歌的每张幻灯片转换为PDF和JPG格式? 谷歌应用程序脚本 我想为谷歌幻灯片文件(包含文字和图形的普通幻灯片)的每张幻灯片创建PDF文件 我回顾了过去的问题,找到了一个生成PDF文件的解决方案,但将幻灯片作为图像(我需要能够在这些PDF中搜索单词) 另一个解决方案应用于转换电子表格->PDF,但它也不适用于我的案例,javascript,google-apps-script,google-slides,Javascript,Google Apps Script,Google Slides,函数autoFlyerGenerator(){ const name_file=“file_name”; //谷歌幻灯片中的模板文件 const ppt_file=DriveApp.getFileById(###幻灯片###); //临时文件夹,用于存储临时幻灯片文件 const temp_folder=DriveApp.getFolderById(##temp#folder_ID#); //PDF文件夹 const pdf_folder=DriveApp.getFolderById(###pd
函数autoFlyerGenerator(){
const name_file=“file_name”;
//谷歌幻灯片中的模板文件
const ppt_file=DriveApp.getFileById(###幻灯片###);
//临时文件夹,用于存储临时幻灯片文件
const temp_folder=DriveApp.getFolderById(##temp#folder_ID#);
//PDF文件夹
const pdf_folder=DriveApp.getFolderById(###pdf#folder_ID#);
//我当前的电子表格
const ss=SpreadsheetApp.getActive();
常量值=ss.getDataRange().getValues();
const temp_ppt=ppt_file.makeCopy(temp_文件夹).setName(name_文件);
const open_temp_ppt=SlidesApp.openById(temp_ppt.getId());
const slides=open_temp_ppt.getSlides();
//第一个for循环遍历所有行(不带标题)
//第二个for循环遍历所有列
对于(var index=0;index
更新
- 我忘了提到Google幻灯片文件的页面设置大小与默认页面设置大小不同
- 这个问题的第一个答案解决了生成PDF文件的问题,但是它不考虑幻灯片的大小。
- 您希望将Google幻灯片的每个页面导出为每个PDF文件
- 您希望使用谷歌应用程序脚本实现这一点
- 从源Google幻灯片中检索所有幻灯片
- 创建一个临时的谷歌幻灯片
- 将每个页面导出为PDF文件
- 删除临时谷歌幻灯片 当此流反映到脚本时,它将变为如下所示 示例脚本: 请将以下脚本复制并粘贴到谷歌幻灯片的脚本编辑器中,然后运行函数
- 我相信你的目标如下
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);
}
- 在本例中,每个PDF文件的文件名类似于
,page_1.PDF
page_2.PDF
- 从标题中,如果要将每张幻灯片导出为每个JPEG文件而不是PDF文件,还可以使用以下示例脚本。在这种情况下,将使用幻灯片API。因此,在运行脚本之前
- 在这种情况下,每个JPEG文件的文件名类似于
,page_1.jpg
page_2.jpg
- 在这种情况下,每个JPEG文件的文件名类似于
我的幻灯片文件的页面设置与默认页面设置不同,因此在应用代码时,生成的PDF文件以默认大小结束,从而生成扭曲的文件。我怎样才能解决这个问题
事实上,这是我的错。我的意思是,我原来的谷歌幻灯片文件有一个不同的页面设置(比如说14 x 18厘米)。代码正常,但生成的PDF文件具有幻灯片的默认页面设置 从上面的回复来看,页面大小似乎不是默认值。在这种情况下,我建议使用原始谷歌幻灯片的页面大小。示例脚本如下所示 示例脚本:
我的幻灯片文件的页面设置与默认页面设置不同,因此在应用代码时,生成的PDF文件以默认大小结束,从而生成扭曲的文件。“我该怎么说呢?”乔纳桑迪亚斯谢谢你的回答。给您带来不便,我深表歉意。从您的回复和更新的问题中,我可以理解您最初的问题。但是关于你的第二个问题,不幸的是,我不能理解。尤其是,我无法理解
提供扭曲文件的情况。我为我糟糕的英语水平道歉。那么,你能提供谷歌幻灯片样本来复制你的问题吗?通过这个,我想确认一下。事实上,这是我的错。我的意思是,我原来的谷歌幻灯片文件有一个不同的页面设置(比如说14 x 18厘米)。代码正常,但生成的PDF文件具有幻灯片的默认页面设置@JonathanDiaz感谢您回复并提供谷歌幻灯片示例。从您的补充信息中,我可以正确理解您当前的问题。所以我又添加了一个示例脚本。你能确认一下吗?如果这不是您所期望的结果,我向您道歉。@JonathanDiaz感谢您的回复和测试。我很高兴你的问题解决了。也谢谢你。
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`));
});
}
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);
}