Google 应用程序脚本:Google 幻灯片 - 将选定的幻灯片导出到新的幻灯片演示文稿

Google apps script: Google Slide - exporting selected slides to a new slide presentation

我正在尝试找出一种将所选幻灯片导出到新幻灯片演示文稿的方法。在按住 ctrl 键并选择胶片中的多张幻灯片后(在 screenshot 示例中是幻灯片 2、3、4),我如何才能仅将那些选定的幻灯片导出到新的幻灯片演示文稿中?

我在堆栈上发现了用户 Tanaike () 回答的一个较旧的问题,该问题导出视图中的活动幻灯片并将其转换为 PDF,但无论我如何编辑脚本,它只会当我 运行 编辑脚本时复制一张幻灯片或 return 一个错误。我无法编辑代码以导出所有选定的幻灯片。

提前感谢您的帮助。 复制我用作参考的 Tanaike 代码部分。

    function myFunction() {

  // 1. Retrieve the active slide.
  const s = SlidesApp.getActivePresentation();
  const activeSlide = s.getSelection().getCurrentPage().asSlide();

  // 2. Create a temporal Google Slides.
  const temporalSlides = SlidesApp.create("temporalSlides");

  // 3. Copy the active slide to the temporal Google Slides.
  temporalSlides.insertSlide(0, activeSlide);

  // 4. Delete the initial slide in the temporal Google Slides.
  temporalSlides.getSlides()[1].remove();
  temporalSlides.saveAndClose();
}

我相信你的目标如下。

  • 您想通过 select 在 Google 幻灯片中复制多张幻灯片,将幻灯片复制到新的 Google 幻灯片。
  • 您想使用 Google Apps 脚本实现此目的。

在您的情况下,下面的示例脚本怎么样?

示例脚本:

在这种情况下,首先,请从活动 Google 幻灯片中 select 幻灯片。并且,请 运行 这个脚本。这样,selected 幻灯片被复制到新的 Google 幻灯片中。新 Google 幻灯片创建到根文件夹。

function myFunction() {
  // 1. Retrieve the selected slides.
  const s = SlidesApp.getActivePresentation();
  const pageRange = s.getSelection().getPageRange();
  if (!pageRange) return;
  const slides = pageRange.getPages();

  // 2. Create a new Google Slides.
  const newSlides = SlidesApp.create("newSlides");

  // 3. Copy the selected slides to the new Google Slides.
  slides.reverse().forEach(s => newSlides.insertSlide(0, s.asSlide(), SlidesApp.SlideLinkingMode.LINKED));

  // 4. Delete the initial slide in the new Google Slides.
  newSlides.getSlides()[slides.length].remove();
}
  • 当您 select 没有幻灯片时,此脚本不是 运行。请注意这一点。

  • 如果要将selected幻灯片复制到现有的Google幻灯片,请将const newSlides = SlidesApp.create("newSlides");修改为const newSlides = SlidesApp.openById("###GoogleSlidesID###");

  • 当你想link复制幻灯片到原来的幻灯片时,请使用slides.reverse().forEach(s => newSlides.insertSlide(0, s.asSlide(), SlidesApp.SlideLinkingMode.LINKED));

参考文献: