【问题标题】:Bring the pageElements to front or back using apps script in Google Slides使用 Google 幻灯片中的应用程序脚本将 pageElements 放在前面或后面
【发布时间】:2018-10-03 15:00:16
【问题描述】:

堆叠顺序由它们插入幻灯片的顺序决定。但是,幻灯片中的某些页面元素仍然隐藏。

有没有办法使用应用脚本更改 Google 幻灯片中对象的顺序?

【问题讨论】:

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


    【解决方案1】:

    这个解决方法怎么样?我和你经历过同样的情况。当时,我已使用此解决方法移动了元素。我认为这种情况有几种解决方法。因此,请将此视为其中之一。此变通方法的流程如下。

    原理:

    例如,在 Google 幻灯片中,当为幻灯片创建新形状时,它会添加到 pageElements 的最后一个元素。这意味着pageElements 的最后一个元素是最前面的。这用于解决方法。

    流程:

    1. 选择形状。
      • 在这种情况下,作为示例,通过单击选择被带到前面的形状。
    2. 使用insertPageElement() 将选定的形状添加到页面。这些将作为新元素添加到页面中。
    3. pageElements 中删除选定的形状。

    这样,选定的形状可以被带到最前面和最后面。当这个流程反映到脚本中时,就变成了如下。

    示例脚本:

    function move(page, spe) {
      var pe = page.getPageElements();
      spe.forEach(function(e) {
        page.insertPageElement(e);
      });
      pe.forEach(function(f, i) {
        if (spe.some(function(g) {return f.getObjectId() == g.getObjectId()})) {
          pe[i].remove();
        }
      });
    }
    
    // Bring to back
    function back() {
      var slide = SlidesApp.getActivePresentation();
      var selected = slide.getSelection();
      var page = selected.getCurrentPage();
      var pageElements = page.getPageElements();
      var selectedPageElements = selected.getPageElementRange().getPageElements();
      var noSelectedPageElements = pageElements.filter(function(e) {return !selectedPageElements.some(function(f) {return e.getObjectId() == f.getObjectId()})});
      move(page, noSelectedPageElements);
    }
    
    // Bring to front
    function front() {
      var slide = SlidesApp.getActivePresentation();
      var selected = slide.getSelection();
      var page = selected.getCurrentPage();
      var pageElements = page.getPageElements();
      var selectedPageElements = selected.getPageElementRange().getPageElements();
      move(page, selectedPageElements);
    }
    

    结果:

    注意:

    • 使用此脚本时,首先请选择幻灯片上的形状。然后运行front()back()。当front() 运行时,选定的形状将移动到最前面。当back() 运行时,它被移到最后面。
    • 在此示例脚本中,选定的形状被置于最前面和最后面。这是一个简单的示例脚本。
      • 如果要移动每个元素的形状,请修改脚本。
    • 在这种情况下,移动的元素将作为新元素添加。因此移动的对象 ID 会更新。

    参考资料:

    如果这个答案不是你想要的,对不起。

    2018 年 11 月 20 日更新:

    The Slides service was updated at Google's update at November 14, 2018, and several methods were added for achieving this issue.

    幻灯片服务已通过以下新方法扩展,可让您控制幻灯片中页面元素的 Z 定位。

    • bringForward()
    • bringToFront()
    • sendBackward()
    • sendToBack()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      相关资源
      最近更新 更多