Как насчет этого обходного пути?Я думаю, что есть 2 модели для этой ситуации.От вашего вопроса в этом ответе он очищает форматы underline, italic, bold, strikethrough, fontFamily and fontSize
.В этом ответе «очистить» означает, что он изменяет формат по умолчанию.
Обходной путь 1:
Использование служб слайдов.Сначала он получает значения по умолчанию стиля текста.В качестве примера поместите текстовое поле, содержащее текстовое значение, на слайд.В этом случае формат текстового значения не изменяется.С помощью Slides API стиль текста по умолчанию извлекается следующим образом.
"style": {
"underline": false,
"italic": false,
"bold": false,
"strikethrough": false,
"fontFamily": "Arial",
"fontSize": {
"magnitude": 14,
"unit": "PT"
}
}
В этом временном решении эти значения используются в качестве значений по умолчанию.Пример сценария выглядит следующим образом.
Пример сценария:
В этом примере стили текста для PageElementType типов SHAPE и TABLE изменяются на форматы по умолчанию.
function toDefault(text) {
if (text.getRange(0,1).asString().charCodeAt(0) != 10) {
var style = text.getTextStyle();
return style.setUnderline(false).setItalic(false).setBold(false).setStrikethrough(false).setFontFamily("Arial").setFontSize(14);
}
return null;
}
function myFunction() {
var s = SlidesApp.getActivePresentation();
var slide = s.getSlides()[0]; // As a sample, 1st page is used.
var pageElements = slide.getPageElements();
pageElements.forEach(function(e) {
if (e.getPageElementType() == "SHAPE") {
var text = e.asShape().getText();
toDefault(text);
} else if (e.getPageElementType() == "TABLE") {
var table = e.asTable();
for (var row = 0; row < table.getNumRows(); row++) {
for (var col = 0; col < table.getNumColumns(); col++) {
var text = table.getCell(row, col).getText();
toDefault(text);
}
}
}
});
}
Обходной путь 2:
Использование API слайдов.Для updateTextStyle
из Slides.Presentations.batchUpdate()
, когда используется только "fields": "underline,italic,bold,strikethrough,fontFamily,fontSize"
без установки каждого значения, используются значения по умолчанию underline,italic,bold,strikethrough,fontFamily,fontSize
.В этом временном решении это используется.
Пример сценария:
В этом примере стили текста для PageElementType для SHAPE и TABLE изменяются на форматы по умолчанию.
function myFunction() {
var s = SlidesApp.getActivePresentation();
var slide = s.getSlides()[0];
var presentationId = s.getId();
var pageElements = slide.getPageElements();
var reqs = pageElements.reduce(function(o, e) {
if (e.getPageElementType() == "SHAPE") {
if (e.asShape().getText().getRange(0,1).asString().charCodeAt(0) != 10) {
o.push({"updateTextStyle": {"objectId": e.getObjectId(), "fields": "underline,italic,bold,strikethrough,fontFamily,fontSize"}});
}
} else if (e.getPageElementType() == "TABLE") {
var table = e.asTable();
var objectId = e.getObjectId();
for (var row = 0; row < table.getNumRows(); row++) {
for (var col = 0; col < table.getNumColumns(); col++) {
var text = table.getCell(row, col).getText();
if (text.getRange(0,1).asString().charCodeAt(0) != 10) {
o.push({"updateTextStyle": {"objectId": e.getObjectId(), "cellLocation": {"columnIndex": row, "rowIndex": col}, "fields": "underline,italic,bold,strikethrough,fontFamily,fontSize"}});
}
}
}
}
return o;
}, []);
var resource = {"requests": reqs};
Slides.Presentations.batchUpdate(resource, presentationId);
}
Примечание:
- Когда вы используете обходной путь 2, включите Slides API в Advanced Services и консоли API.
- Если вы хотите очистить все форматы стиля текста,для обходного пути 2 измените значение с
"fields": "underline,italic,bold,strikethrough,fontFamily,fontSize"
на "fields": "*"
.
Ссылки: