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

Saving a PDF copy of all pages of a Slide Presentation

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

  1. 所有幻灯片页面必须复制到一个 PDF 文件中。
  2. 必须能够 select 个需要复制为 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);
}

我相信你的目标如下。

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

参考文献: