如果包含字符串,请删除表

时间:2018-04-20 08:32:31

标签: javascript google-apps-script google-slides

我希望自动删除幻灯片中的表格,如果它们包含特定的文本字符串。这是我目前所拥有的,但由于某种原因,findText()似乎不起作用,我无法找到替代方案...

function removeUnwantedTables() {
var gotSlides = 
SlidesApp.openById('1gJjGBbaQXWhP8uhVIoccV2h_RL7_gsxvg_NW-qNCcLU').getSlides();

  for (var i = 0; i < gotSlides.length; i++) {
    var slide = gotSlides[i];
    var tables = slide.getTables();

    for (var k = 0; k < tables.length; k++) {
      var allTables = tables[k];
      if (allTables.findText('{{remove-this-table}}') > 0) {
      allTables.remove();
    }
  }
 }
}

有没有人有解决方案?

1 个答案:

答案 0 :(得分:2)

这次修改怎么样?我认为可能有几个答案。所以请把它想象成其中之一。

修改要点:

  • 使用getCell(),检索每个单元格并将其与{{remove-this-table}}字符串进行比较。
    • 我找不到直接从表中搜索字符串的方法。所以我用过这个。
  • 找到{{remove-this-table}}后,表格将被删除,for循环将被删除。

修改后的脚本:

function removeUnwantedTables() {
  var gotSlides = SlidesApp.openById('1gJjGBbaQXWhP8uhVIoccV2h_RL7_gsxvg_NW-qNCcLU').getSlides();
  for (var i = 0; i < gotSlides.length; i++) {
    var slide = gotSlides[i];
    var tables = slide.getTables();
    if (tables.length > 0) {
      for (var k = 0; k < tables.length; k++) {
        var allTables = tables[k];
        row = allTables.getNumRows();
        col = allTables.getNumColumns();
        var values = [];
        for (var r = 0; r < row; r++) {
          for (var c = 0; c < col; c++) {
            var v = allTables.getCell(r, c).getText().asString();
            if (v.indexOf("{{remove-this-table}}") > -1) {
              values.push(v);
              break;
            }
          }
          if (values.length > 0) {
            allTables.remove();
            break;
          }
        }
      }
    }
  }
}

如果这不是你想要的,我很抱歉。