代码之家  ›  专栏  ›  技术社区  ›  Code Guy

使用谷歌幻灯片中的应用程序脚本将页面元素置于前面或后面

  •  0
  • Code Guy  · 技术社区  · 6 年前

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

    有没有方法可以使用应用程序脚本更改谷歌幻灯片中对象的顺序?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tanaike    6 年前

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

    原理:

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

    流量:

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

    通过这种方式,所选形状可以被带到最前面和最后面。当此流反映到脚本中时,它将变为如下所示。

    示例脚本:

    函数移动(page,spe){
    var pe=page.getpageElements();
    spe.foreach(函数(e){
    page.insertpageelement(e)页;
    (});
    pe.foreach(函数(f,i){
    if(spe.some(函数(g)返回f.getObjectId()==g.getObjectId()))。{
    PE[i]
    }
    (});
    }
    
    //返回
    函数back()。{
    var slide=slidesap.getActivePresentation();
    var selected=slide.getselection();
    var page=selected.getcurrentpage();
    var pageElements=page.getpageElements();
    var selectedpageelements=selected.getpageelementrange().getpageelements();
    var noselectedpageelements=pageelements.filter(函数(e)返回!selectedpageElements.some(函数(f)返回e.getObjectId()==f.getObjectId());
    移动(page,noselectedpageelements);
    }
    
    //放在前面
    函数front()。{
    var slide=slidesap.getActivePresentation();
    var selected=slide.getselection();
    var page=selected.getcurrentpage();
    var pageElements=page.getpageElements();
    var selectedpageelements=selected.getpageelementrange().getpageelements();
    移动(page,selectedpageelements);
    }
    < /代码> 
    
    

    结果:

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

    参考文献:

    如果这个答案不是你想要的,我很抱歉。

    2018年11月20日更新:

    The slides service was updated at google's update at 11月14日,and some methods were added for achieving this issue.

    < Buff行情>

    幻灯片服务已经通过以下新方法进行了扩展,这些新方法允许您控制幻灯片中页面元素的Z定位。

    • BringForward()号
    • bringtofront()。
    • 发送向后()。
    • sendtoback()。
    < /块引用> 对于这种情况,有几种解决办法。所以请把这看作是其中之一。此工作区的流程如下。

    原则:

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

    Flow:

    1. 选择形状。
      • 在这种情况下,作为一个示例,单击选择带到前面的形状。
    2. 使用将所选形状添加到页面insertPageElement(). 它们作为新元素添加到页面中。
    3. 从中删除所选形状页面元素.

    通过这种方式,所选形状可以被带到最前面和最后面。当这个流程反映到脚本中时,它会变成如下所示。

    样本脚本:

    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);
    }
    

    结果:

    enter image description here

    注:

    • 使用此脚本时,首先请选择幻灯片上的形状。然后运行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定位。

    • Brut前进()
    • BruttoFron()
    • SnDeBurdWar()
    • StotoButter()