使用Google幻灯片中的应用脚本将pageElement放在前面或后面

时间:2018-10-03 15:00:16

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

堆叠顺序取决于将它们插入幻灯片的顺序。但是,幻灯片中的某些页面元素仍处于隐藏状态。

是否可以使用应用脚本更改Google幻灯片中对象的顺序?

1 个答案:

答案 0 :(得分: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);
}

结果:

enter image description here

注意:

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