0

我正在研究自动幻灯片设置,并且根据一些退出变量,如果最终输出中不需要它们,我需要删除一些幻灯片。为了解决这个问题,我创建了一个脚本,将一个简单的文本字符串添加{{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();
  }
 }
}

谁能弄清楚这里出了什么问题?

4

2 回答 2

1

这个改装怎么样?

修改点:

  • 删除整个幻灯片的原因是;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();
      }
    }
  }
}

参考 :

如果我误解了你的问题,我很抱歉。

于 2018-04-16T23:26:19.990 回答
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;
      }
    }
  }
}
于 2019-07-01T01:16:55.767 回答