我正在进行自动幻灯片设置,根据一些选择退出变量,如果在最终输出中不需要它们,我需要删除一些幻灯片。为了解决这个问题,我创建了一个脚本,为需要删除的幻灯片添加一个简单的文本字符串{{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();
}
}
}
有谁能弄明白这里出了什么问题?
答案 0 :(得分:1)
这次修改怎么样?
XDocument xdoc = XDocument.Parse(xmlString);
var music = xdoc.Descendants().Where(x => x.Name == "music");
var parents = music.Ancestors().Reverse()
.Select(a=>new XElement(a.Name.LocalName)).ToArray();
XElement root = new XElement(xdoc.Root.Name.LocalName);
XDocument xdoc2 = new XDocument(root);
XElement lastAdded = root;
for (int i = 1; i < parents.Count(); i++)
{
lastAdded.Add(parents[i]);
lastAdded = parents[i];
}
lastAdded.Add(music);
Console.WriteLine(xdoc2.ToString());
之后的;
。按此if (currentPresentationSlide[i].getPageElements().indexOf('{{remove-this-slide}}') > -1);
,;
不起作用,if
始终运行。currentPresentationSlide[i].remove();
检索文本数据。如果要从文本框中搜索文本,请使用currentPresentationSlide[i].getPageElements()
。
currentPresentationSlide[i].getShapes()
如果我误解了你的问题,我很抱歉。
答案 1 :(得分:0)
@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;
}
}
}
}