为幻灯片设置特定的 ID

Set specific ID to the slide

我有一个 Google 幻灯片主文档,我从中将特定幻灯片复制到另一个 Google 幻灯片文档中。 但是当我复制幻灯片时,我想给它一个特定的 ID (e.g. Slide_num-001)。

我通过复制幻灯片来做到这一点,然后用我想要的 ID 复制副本,然后删除副本。它有效,但我认为它远非理想的解决方案。

请问有更好的方法吗? 我找不到任何功能,例如 setObjectID()

很抱歉,没有专门设置幻灯片 ID 的方法。此外,不建议设置对象的幻灯片 ID,因为它已在后台自动创建,这有悖于直觉,同时也浪费资源。这就是为什么它没有作为方法提供的原因。

我建议创建一个字典,而不是保存 Slide_num-<number> 和幻灯片 ID 的配对。

我创建了一个使用该想法的示例代码。

代码:

function setDictionary() {
  // I have 5 slides as sample
  var presentation = SlidesApp.getActivePresentation();
  var slides = presentation.getSlides();
  var dictionary = {};

  // Set Object ID as value to key "Slide_num-<number>"
  slides.forEach(function (slide, index) {
    dictionary["Slide_num-" + padLeadingZeros(index + 1, 3)] = slide.getObjectId();
  });
  // In your case, after copying the slide, assign the value "slide.getObjectId()" to the key "Slide_num-<number>"

  // Sample: 
  // Sets 5th slide background to red 
  var slide = presentation.getSlideById(dictionary["Slide_num-005"]);
  Logger.log(slide.getBackground().setSolidFill(255,0,0));
}

function padLeadingZeros(num, size) {
  // Function that appends 0s to the number based on the size
  // Returns "001" when num is "1" and size is "3"
  var s = num + "";
  while (s.length < size) {
    s = "0" + s;
  } 
  return s;
}

这样做的好处是减少了 API 调用,使其更独立于 API。

请参阅 class 幻灯片的可用方法列表参考。

参考:

如果这不是您的解决方案,我深表歉意wanted/needed。