【问题标题】:Google Slide API-How do i duplicate a slide several times and creating a unique object id each timeGoogle Slide API-我如何多次复制幻灯片并每次创建唯一的对象 ID
【发布时间】:2019-12-11 10:46:44
【问题描述】:

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

这是主幻灯片

这是我用于复制的代码,但它只能复制一次母版幻灯片,因为它创建的 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);
    }

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

如果有任何帮助,我将不胜感激!

【问题讨论】:

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


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

    如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

    修改点:

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

    修改脚本:

    在运行脚本之前,请在 Google 高级服务中启用 Slides 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}});,则在复制完成后,作为源幻灯片的第一页将被删除。但我不确定这是否是你想要的结果。所以我把它作为注释放在脚本中。

    参考资料:

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

    【讨论】:

    • 太棒了!这对于一个答案来说绰绰有余。非常感谢!
    • @Julian 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多