Удалить таблицу, если содержит строку

Я ищу для автоматического удаления таблиц в слайдах, если они содержат определенную текстовую строку. Это то, что у меня сейчас есть, но по какой-то причине 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 ответ

Решение

Как насчет этой модификации? Я думаю, что может быть несколько ответов. Поэтому, пожалуйста, подумайте об этом как об одном из них.

Точки модификации:

  • С помощью 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;
          }
        }
      }
    }
  }
}

Если это было не то, что вы хотите, извините.

Другие вопросы по тегам