删除包含特定文本字符串的幻灯片
Delete slides that contain a specific text string
我正在处理自动幻灯片设置,并且根据一些选择退出变量,如果最终输出中不需要它们,我需要删除一些幻灯片。为了解决这个问题,我创建了一个脚本,该脚本将一个简单的文本字符串 {{remove-this-slide}}
添加到需要删除的幻灯片中。
但是,当尝试获取脚本来删除包含该字符串的幻灯片时,它会不断删除我的整个演示文稿...
这是我的:
function deleteFunction() {
var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides();
for (i = 0; i < currentPresentationSlide.length; i++) {
if (currentPresentationSlide[i].getPageElements().indexOf('{{remove-this-slide}}') > -1); {
currentPresentationSlide[i].remove();
}
}
}
谁能知道这里出了什么问题?
这个修改怎么样?
修改点:
- 删除整张幻灯片的原因是
if (currentPresentationSlide[i].getPageElements().indexOf('{{remove-this-slide}}') > -1);
之后的 ;
。通过这个 ;
,if
不起作用并且 currentPresentationSlide[i].remove();
总是 运行.
- 无法从
currentPresentationSlide[i].getPageElements()
检索文本数据。当您想从文本框中搜索文本时,请使用currentPresentationSlide[i].getShapes()
。
- 根据你的问题,我不确定你想从哪里搜索文本。所以我假设您想从形状中搜索文本。该形状包括文本框。
修改脚本:
function deleteFunction() {
var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides();
for (i = 0; i < currentPresentationSlide.length; i++) {
var shapes = currentPresentationSlide[i].getShapes();
for (j = 0; j < shapes.length; j++) {
if (shapes[j].getText().asString().indexOf('{{remove-this-slide}}') > -1) {
currentPresentationSlide[i].remove();
}
}
}
}
参考:
如果我误解了你的问题,我很抱歉。
@Tanaike 的代码中有一个小错误。因为同一张幻灯片中可能有更多的形状,所以你必须在删除幻灯片后打破循环。
否则代码会尝试遍历已删除幻灯片的形状,从而产生错误。
所以正确的片段看起来像:
function deleteFunction() {
var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides();
for (i = 0; i < currentPresentationSlide.length; i++) {
var shapes = currentPresentationSlide[i].getShapes();
for (j = 0; j < shapes.length; j++) {
if (shapes[j].getText().asString().indexOf('{{remove-this-slide}}') > -1) {
currentPresentationSlide[i].remove();
break;
}
}
}
}
我正在处理自动幻灯片设置,并且根据一些选择退出变量,如果最终输出中不需要它们,我需要删除一些幻灯片。为了解决这个问题,我创建了一个脚本,该脚本将一个简单的文本字符串 {{remove-this-slide}}
添加到需要删除的幻灯片中。
但是,当尝试获取脚本来删除包含该字符串的幻灯片时,它会不断删除我的整个演示文稿...
这是我的:
function deleteFunction() {
var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides();
for (i = 0; i < currentPresentationSlide.length; i++) {
if (currentPresentationSlide[i].getPageElements().indexOf('{{remove-this-slide}}') > -1); {
currentPresentationSlide[i].remove();
}
}
}
谁能知道这里出了什么问题?
这个修改怎么样?
修改点:
- 删除整张幻灯片的原因是
if (currentPresentationSlide[i].getPageElements().indexOf('{{remove-this-slide}}') > -1);
之后的;
。通过这个;
,if
不起作用并且currentPresentationSlide[i].remove();
总是 运行. - 无法从
currentPresentationSlide[i].getPageElements()
检索文本数据。当您想从文本框中搜索文本时,请使用currentPresentationSlide[i].getShapes()
。- 根据你的问题,我不确定你想从哪里搜索文本。所以我假设您想从形状中搜索文本。该形状包括文本框。
修改脚本:
function deleteFunction() {
var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides();
for (i = 0; i < currentPresentationSlide.length; i++) {
var shapes = currentPresentationSlide[i].getShapes();
for (j = 0; j < shapes.length; j++) {
if (shapes[j].getText().asString().indexOf('{{remove-this-slide}}') > -1) {
currentPresentationSlide[i].remove();
}
}
}
}
参考:
如果我误解了你的问题,我很抱歉。
@Tanaike 的代码中有一个小错误。因为同一张幻灯片中可能有更多的形状,所以你必须在删除幻灯片后打破循环。
否则代码会尝试遍历已删除幻灯片的形状,从而产生错误。
所以正确的片段看起来像:
function deleteFunction() {
var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides();
for (i = 0; i < currentPresentationSlide.length; i++) {
var shapes = currentPresentationSlide[i].getShapes();
for (j = 0; j < shapes.length; j++) {
if (shapes[j].getText().asString().indexOf('{{remove-this-slide}}') > -1) {
currentPresentationSlide[i].remove();
break;
}
}
}
}