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