Google 幻灯片 API-如何多次复制一张幻灯片并每次都创建一个唯一的对象 ID

Google Slide API-How do i duplicate a slide several times and creating a unique object id each time

一般来说,我希望人们将一些数据放入 google sheet 并提供一个按钮,该按钮获取数据并自动填充预制的 google 幻灯片。我选择了复制母版幻灯片然后用数据替换单个文本模块的方法。有没有更好的方法来实现我的目标?

这是母版幻灯片

这是我用于复制的代码,但它只能复制母版幻灯片一次,因为它创建的 objectId 始终相同:"copiedSlide_001"。我试图为 objectId 使用一个随机整数,但我没有让它工作。另外,我想该名称必须是可预测的才能在下一步中使用。 (将数据导入到新复制的幻灯片中)。

function duplicateSlide() {  

    var presentationId = "1XLtOv7FHWwv6R2QEZF_LEhF7twXTlY3IbvsVDKxdDtc";
    var pageId = "g75e5d89173_0_0"
    var requests = [{

      "duplicateObject": {
        "objectId": pageId,
        "objectIds": {
          "g75e5d89173_0_0": "copiedSlide_001",

        }
      }
    } ]Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    }

如何让复制过程对我有利?

非常感谢任何帮助!

  • 您想在 Google 个幻灯片中多次复制母版幻灯片。
  • 您想为每个复制的幻灯片提供唯一的对象 ID,如 copiedSlide_001
    • 在复制之前,您需要知道所复制幻灯片的对象 ID。
  • 您想使用 Google Apps 脚本实现此目的。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

修改点:

  • 在这个修改中,它使用batchUpdate的方法请求了几个DuplicateObjectRequest。

修改后的脚本:

在您 运行 脚本之前,请在高级 Google 服务中启用幻灯片 API。

function duplicateSlide() {
  var presentationId = "1XLtOv7FHWwv6R2QEZF_LEhF7twXTlY3IbvsVDKxdDtc"; // Please set the Slides ID.
  var pageId = "g75e5d89173_0_0"; // Please set the page ID of the source slide.
  var newIDs = ["copiedSlide_001", "copiedSlide_002", "copiedSlide_003"]; // Please set the unique ID here.

  var requests = newIDs.reverse().map(function(id) {
    var obj = {};
    obj[pageId] = id;
    return {duplicateObject: {objectId: pageId, objectIds: obj}};
  });
//  requests.push({deleteObject: {objectId: pageId}});
  Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}
  • 当你运行脚本时,作为测试用例,源幻灯片被复制了3次。每个对象ID分别为"copiedSlide_001"、"copiedSlide_002"和"copiedSlide_003"。
    • 第2、3、4页的页面ID分别为"copiedSlide_001"、"copiedSlide_002"、"copiedSlide_003"。
  • 如果您使用requests.push({deleteObject: {objectId: pageId}});,复制完成后,第一页,即源幻灯片,将被删除。但我不确定这是否是你想要的结果。所以我把它作为注释放在脚本中。

参考文献:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。