使用 Google 幻灯片中的应用程序脚本将 pageElements 置于前面或后面
Bring the pageElements to front or back using apps script in Google Slides
堆叠顺序由它们插入幻灯片的顺序决定。但是,幻灯片中的某些页面元素仍然隐藏。
有没有办法使用应用程序脚本更改 Google 幻灯片中对象的顺序?
这个解决方法怎么样?我和你经历过同样的情况。那时,我已经使用此解决方法移动了元素。我认为针对这种情况有几种解决方法。因此,请将此视为其中之一。此解决方法的流程如下。
原理:
例如,在 Google 幻灯片中,当为幻灯片创建新形状时,它会添加到 pageElements
的最后一个元素。这意味着 pageElements
的最后一个元素是最前面的。这用于解决方法。
流量:
- Select 个形状。
- 在这种情况下,作为样本,被带到前面的形状是通过单击 select 编辑的。
- 使用
insertPageElement()
将 selected 形状添加到页面。这些作为新元素添加到页面。
- 从
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 has been extended with the following new methods that let you control the Z-positioning of page elements in Slides.
- bringForward()
- bringToFront()
- sendBackward()
- sendToBack()
堆叠顺序由它们插入幻灯片的顺序决定。但是,幻灯片中的某些页面元素仍然隐藏。
有没有办法使用应用程序脚本更改 Google 幻灯片中对象的顺序?
这个解决方法怎么样?我和你经历过同样的情况。那时,我已经使用此解决方法移动了元素。我认为针对这种情况有几种解决方法。因此,请将此视为其中之一。此解决方法的流程如下。
原理:
例如,在 Google 幻灯片中,当为幻灯片创建新形状时,它会添加到 pageElements
的最后一个元素。这意味着 pageElements
的最后一个元素是最前面的。这用于解决方法。
流量:
- Select 个形状。
- 在这种情况下,作为样本,被带到前面的形状是通过单击 select 编辑的。
- 使用
insertPageElement()
将 selected 形状添加到页面。这些作为新元素添加到页面。 - 从
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 has been extended with the following new methods that let you control the Z-positioning of page elements in Slides.
- bringForward()
- bringToFront()
- sendBackward()
- sendToBack()