0

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

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

4

1 回答 1

4

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

原则:

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

流动:

  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 日更新:

Google 于 2018 年 11 月 14 日更新了 Slides 服务,并添加了几种方法来解决此问题。

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

  • 向前进()
  • 带到前线()
  • 向后发送()
  • 发送返回()
于 2018-10-04T00:04:39.923 回答