【发布时间】:2018-10-03 15:00:16
【问题描述】:
堆叠顺序由它们插入幻灯片的顺序决定。但是,幻灯片中的某些页面元素仍然隐藏。
有没有办法使用应用脚本更改 Google 幻灯片中对象的顺序?
【问题讨论】:
标签: google-apps-script google-slides-api google-slides
堆叠顺序由它们插入幻灯片的顺序决定。但是,幻灯片中的某些页面元素仍然隐藏。
有没有办法使用应用脚本更改 Google 幻灯片中对象的顺序?
【问题讨论】:
标签: google-apps-script google-slides-api google-slides
这个解决方法怎么样?我和你经历过同样的情况。当时,我已使用此解决方法移动了元素。我认为这种情况有几种解决方法。因此,请将此视为其中之一。此变通方法的流程如下。
例如,在 Google 幻灯片中,当为幻灯片创建新形状时,它会添加到 pageElements 的最后一个元素。这意味着pageElements 的最后一个元素是最前面的。这用于解决方法。
insertPageElement() 将选定的形状添加到页面。这些将作为新元素添加到页面中。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() 运行时,它被移到最后面。如果这个答案不是你想要的,对不起。
幻灯片服务已通过以下新方法扩展,可让您控制幻灯片中页面元素的 Z 定位。
- bringForward()
- bringToFront()
- sendBackward()
- sendToBack()
【讨论】: