保存幻灯片演示文稿所有页面的PDF副本



我有一个幻灯片演示,其中有链接到电子表格的图表。我想在一个PDF文件中创建此幻灯片所有页面的PDF副本,以供分发。我从@Tanaike那里找到了一个脚本,除了一些添加之外,它还能工作。

  1. 所有幻灯片页面必须复制到一个PDF文件中
  2. 必须能够选择需要复制为PDF的页面
  3. 如果可能的话,请附上一个脚本,自动通过电子邮件发送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);
}

我相信您的目标如下。

  • 您想通过选择谷歌幻灯片中的特定幻灯片将谷歌幻灯片转换为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.中选择特定幻灯片的方法。所以在这个示例中,我使用了一个包含页码的数组。如果这不是方向,请修改。

参考文献:

类幻灯片的
  • remove((
  • sendEmail(消息(

相关内容

最新更新