保存幻灯片演示文稿所有页面的 PDF 副本
Saving a PDF copy of all pages of a Slide Presentation
我有一个幻灯片演示文稿,其中包含链接到电子表格的图表。
我想在一个 PDF 文件中创建此幻灯片所有页面的 PDF 副本以供分发。
我从 @Tanaike 找到了一个脚本,除了一些添加之外,它可以工作。
- 所有幻灯片页面必须复制到一个 PDF 文件中。
- 必须能够 select 个需要复制为 PDF 的页面。
- 如果可能,请包含一个脚本以自动通过电子邮件发送 PDF 副本。
非常感谢您的帮助。
当前脚本:
function myFunction2() {
const folderId = "13Un85DDcMiW_ACHC1Tncrgaqt_DP5cg3"; // 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);
}
我相信你的目标如下。
- 您想通过选择 Google 幻灯片中的特定幻灯片将 Google 幻灯片转换为 PDF 文件。
- 您想将创建的 PDF 文件作为电子邮件的附件发送。
- 您想通过修改显示脚本来实现。
这样的话,下面的修改怎么样?从你的展示脚本来看,我认为你可能使用了。在此脚本中,每张幻灯片都创建为每个 PDF 文件。至此,本示例脚本并未直接使用。
当这个脚本被修改以达到你的目的时,下面的修改怎么样?
修改后的脚本:
在使用此脚本之前,请设置文件夹 ID 和所选页码以及您要发送的电子邮件地址。在此脚本中,使用选定的页码导出特定幻灯片。
function myFunction3() {
const folderId = "root"; // Please set the folder ID you want to put the exported PDF files.
const selectedPages = [1, 2, 3, 5]; // Please set the selected page numbers.
const emailAddress = "###"; // Please set the email address.
// 1. Retrieve all slides from the source Google Slides.
const slide = SlidesApp.getActivePresentation();
const srcId = slide.getId();
// 2. Create a temporal Google Slides.
const file = DriveApp.getFileById(srcId).makeCopy("temp");
const id = file.getId();
let temp = SlidesApp.openById(id);
const tempSlides = temp.getSlides();
for (let i = tempSlides.length - 1; i >= 0; i--) {
if (!selectedPages.includes(i + 1)) {
tempSlides[i].remove();
}
}
// 3. Export each page as a PDF file.
temp.saveAndClose();
const blob = file.getBlob().setName(`${file.getName()}.pdf`);
DriveApp.getFolderById(folderId).createFile(blob);
// 4. Remove the temporal Google Slides.
file.setTrashed(true);
// 5. Send email.
MailApp.sendEmail({ to: emailAddress, subject: "sample subject", body: "sample text body", attachments: [blob] });
}
当此脚本为运行时,选择特定幻灯片并将其转换为PDF数据,并创建为PDF文件,然后作为附件发送电子邮件文件。
在此示例中,使用了 const selectedPages = [1, 2, 3, 5]
。本例导出第1、2、3、5页幻灯片
注:
如果您不想创建文件,请删除DriveApp.getFolderById(folderId).createFile(blob);
。
遗憾的是,我无法理解从Must be able to select pages that needs to be copied as PDF.
中选择特定幻灯片的方法。所以在这个示例中,我使用了一个包含页码的数组。如果不是这个方向,请修改。
参考文献:
我有一个幻灯片演示文稿,其中包含链接到电子表格的图表。 我想在一个 PDF 文件中创建此幻灯片所有页面的 PDF 副本以供分发。 我从 @Tanaike 找到了一个脚本,除了一些添加之外,它可以工作。
- 所有幻灯片页面必须复制到一个 PDF 文件中。
- 必须能够 select 个需要复制为 PDF 的页面。
- 如果可能,请包含一个脚本以自动通过电子邮件发送 PDF 副本。 非常感谢您的帮助。
当前脚本:
function myFunction2() {
const folderId = "13Un85DDcMiW_ACHC1Tncrgaqt_DP5cg3"; // 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);
}
我相信你的目标如下。
- 您想通过选择 Google 幻灯片中的特定幻灯片将 Google 幻灯片转换为 PDF 文件。
- 您想将创建的 PDF 文件作为电子邮件的附件发送。
- 您想通过修改显示脚本来实现。
这样的话,下面的修改怎么样?从你的展示脚本来看,我认为你可能使用了
当这个脚本被修改以达到你的目的时,下面的修改怎么样?
修改后的脚本:
在使用此脚本之前,请设置文件夹 ID 和所选页码以及您要发送的电子邮件地址。在此脚本中,使用选定的页码导出特定幻灯片。
function myFunction3() {
const folderId = "root"; // Please set the folder ID you want to put the exported PDF files.
const selectedPages = [1, 2, 3, 5]; // Please set the selected page numbers.
const emailAddress = "###"; // Please set the email address.
// 1. Retrieve all slides from the source Google Slides.
const slide = SlidesApp.getActivePresentation();
const srcId = slide.getId();
// 2. Create a temporal Google Slides.
const file = DriveApp.getFileById(srcId).makeCopy("temp");
const id = file.getId();
let temp = SlidesApp.openById(id);
const tempSlides = temp.getSlides();
for (let i = tempSlides.length - 1; i >= 0; i--) {
if (!selectedPages.includes(i + 1)) {
tempSlides[i].remove();
}
}
// 3. Export each page as a PDF file.
temp.saveAndClose();
const blob = file.getBlob().setName(`${file.getName()}.pdf`);
DriveApp.getFolderById(folderId).createFile(blob);
// 4. Remove the temporal Google Slides.
file.setTrashed(true);
// 5. Send email.
MailApp.sendEmail({ to: emailAddress, subject: "sample subject", body: "sample text body", attachments: [blob] });
}
当此脚本为运行时,选择特定幻灯片并将其转换为PDF数据,并创建为PDF文件,然后作为附件发送电子邮件文件。
在此示例中,使用了
const selectedPages = [1, 2, 3, 5]
。本例导出第1、2、3、5页幻灯片
注:
如果您不想创建文件,请删除
DriveApp.getFolderById(folderId).createFile(blob);
。遗憾的是,我无法理解从
Must be able to select pages that needs to be copied as PDF.
中选择特定幻灯片的方法。所以在这个示例中,我使用了一个包含页码的数组。如果不是这个方向,请修改。