【问题标题】:Copying a slide from one Google Slides presentation into another将幻灯片从一个 Google 幻灯片演示文稿复制到另一个
【发布时间】:2018-03-29 21:09:30
【问题描述】:

我为这个问题寻找了一个不错的答案,但我在 SO 上找不到任何东西,所以我想我会发布一个新帖子。

我正在尝试使用带有谷歌应用脚​​本的高级幻灯片服务将一张幻灯片从谷歌幻灯片复制到另一张幻灯片中。

function myFunction() {
  var originalPresentation = Slides.Presentations.get('1Lqtwb5z8NcU4VVj8OOR11AJyET70tlRRj6QIhxsEZZg');

  var slideToCopy = originalPresentation.slides[3];

  var newSlides = Slides.Presentations.create({
    title: 'New Slidedeck',
    slides: [slideToCopy]
  })
}

这会创建带有标题的幻灯片,但不会复制幻灯片。 documentation 表示您可以传递带有标题的幻灯片数组,但没有复制任何内容。它还需要母版和布局吗?我究竟做错了什么? 提前致谢。

【问题讨论】:

  • 嘿,我看起来一模一样!你找到解决方案了吗?
  • 不,我希望。我向 Google 提出了一个问题:issuetracker.google.com/issues/68126064
  • 虽然不是最流行的:(
  • 谢谢,我会帮助你与我的团队分享这个问题来给它加星标。

标签: google-apps-script google-slides-api


【解决方案1】:

2018 年 2 月 16 日更新

February 13, 2018,SlidesApp 服务已更新。现在,可以通过原生方法实现复制幻灯片了。

此示例脚本复制 srcPresentationId 的第 1 页并将其作为活动演示文稿的第 1 页插入。

示例脚本:

var srcPresentationId = "### source fileId ###";
var copysrcSlideIndex = 0; // 0 means page 1.

var copydstSlideIndex = 0; // 0 means page 1.

var src = SlidesApp.openById(srcPresentationId).getSlides()[copysrcSlideIndex];
SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);

参考:

原答案

还在寻找复制幻灯片的方法吗?不幸的是,我确认尚无法使用 Slides API 进行复制。但我想到了一个解决方法。

以下解决方法怎么样?在最近的 Google 更新中,我注意到添加了 Class SlidesApp。我用过这个。由于我没有找到直接将幻灯片复制到新演示文稿的方法,所以我使用了以下流程。

流程:

  1. 使用DriveApp复制演示文稿。
  2. 打开复制的演示文稿。
  3. 使用remove()删除除要复制的幻灯片以外的幻灯片。

示例脚本:

function myFunction() {
  var srcSlides = 3; // A page number of slide that you want to copy. In this case, the top number is 1.

  var srcid = "1Lqtwb5z8NcU4VVj8OOR11AJyET70tlRRj6QIhxsEZZg";
  var dstid = DriveApp.getFileById(srcid).makeCopy().getId();
  var dstSlides = SlidesApp.openById(dstid).getSlides();
  dstSlides.splice(srcSlides - 1, 1);
  for (var i in dstSlides) {
    dstSlides[i].remove();
  }
}

参考资料:

如果这对你没有用,我很抱歉。

【讨论】:

  • 感谢您的解决方法!即使不是我正在寻找的确切解决方案,我也会将其标记为正确。如果您不介意,请为功能请求加注星标,希望他们会添加一种方法来实现这一点。 issuetracker.google.com/issues/68126064
  • @Jordan Rhea 感谢您的快速回复。我还想要使用 Slides API 的简单方法,例如您的脚本。现在我检查了星星。在问题解决之前,我想使用此解决方法。
  • @Jordan Rhea 谢谢!
  • @Jordan Rhea 我注意到我添加的脚本只复制了一个元素。所以我修改了它。给您带来的不便,我深表歉意。
  • @Jordan Rhea 我找到了一种更简单的复制幻灯片的方法。所以我更新了我的答案。请确认。
【解决方案2】:

也许你正在寻找这个?

  var PresentationTEST = SlidesApp.openById(TEMPLATE_TEST);
  var PresentationTemplate = SlidesApp.openById(TEMPLATE_DEV);
  var slides = PresentationTemplate.getSlides();

  var slide = slides[0];
  var slide = PresentationTEST.appendSlide(slide);

【讨论】:

  • 测试了这个解决方案,效果很好。太糟糕了,我们必须转移到 App Scripts 并且无法在 API 中执行此操作,但至少它可以工作。
  • 一年后编辑:性能很糟糕,如果您使用大量幻灯片并想这样做,它最终将不再工作。
猜你喜欢
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
相关资源
最近更新 更多