使用 Google 幻灯片中的应用程序脚本将 pageElements 置于前面或后面

Bring the pageElements to front or back using apps script in Google Slides

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

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

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

原理:

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

流量:

  1. Select 个形状。
    • 在这种情况下,作为样本,被带到前面的形状是通过单击 select 编辑的。
  2. 使用 insertPageElement() 将 selected 形状添加到页面。这些作为新元素添加到页面。
  3. pageElements 中删除 selected 形状。

这样就可以把selected的形状带到最前面和最后面。当这个流程反映到脚本中,就变成了下面的样子。

示例脚本:

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

结果:

注:

  • 当您使用这个脚本时,首先,请select幻灯片上的形状。然后 运行 front()back()。当 front() 为 运行 时,selected 形状移动到最前面。当back()为运行时,移到最后面
  • 在此示例脚本中,selected 形状被置于最前面和最后面。这是一个简单的示例脚本。
    • 如果要移动每个元素的形状,请修改脚本。
  • 在这种情况下,移动的元素将作为新元素添加。因此移动的对象 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.

The Slides service has been extended with the following new methods that let you control the Z-positioning of page elements in Slides.

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