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));
。
参考文献:
我正在尝试找出一种将所选幻灯片导出到新幻灯片演示文稿的方法。在按住 ctrl 键并选择胶片中的多张幻灯片后(在 screenshot 示例中是幻灯片 2、3、4),我如何才能仅将那些选定的幻灯片导出到新的幻灯片演示文稿中?
我在堆栈上发现了用户 Tanaike (
提前感谢您的帮助。 复制我用作参考的 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));
。