是否可以分别为每个单词获取文本样式?
Is it possible to get text style for each words individually?
我知道可以使用
getSelection().getTextRange().getTextStyle()
但是如果我想从上一张幻灯片中逐字检索文本样式(单独获取每个单词的文本样式),有没有办法做到这一点?
您可以遍历幻灯片的 PageElements,并从每个元素中检索文本样式。
对于每个 PageElement
,您必须检查其类型是否有 TextRange as one of its properties (only Shape and TextCell 个元素(有 TextRange
)。如果您尝试从不包含文本的元素中检索文本,最终可能会出错。
然后,对于您检索的每个 textRange
,您可以遍历其 运行s(此文本中包含的具有不同文本样式的不同段),并检索文本样式每个 运行.
代码示例:
function getTextStyles() {
var slideId = "your-slide-id"; ID of the slide you want to retrieve text style
var presentation = SlidesApp.getActivePresentation();
var slide = presentation.getSlideById(slideId);
var pageElements = slide.getPageElements(); // Get all page elements in slide
pageElements.forEach(function(pageElement) { // Loop through all page elements in slide
if (pageElement.getPageElementType() == "SHAPE") { // Check that current page element is of type "SHAPE"
var textRange = pageElement.asShape().getText(); // Get text belonging to current page element
textRange.getRuns().forEach(function(run) { // Loop through all runs in text
var textStyle = run.getTextStyle(); // Get current row text style
console.log(textStyle);
});
};
});
}
注:
- 上面的代码记录了幻灯片中属于
Shape
元素的所有文本的 TextStyle
。 TableCell
元素也可以包含文本,因此如果您也想检索该信息,则必须相应地修改脚本(查看 Class Table)。
参考:
我知道可以使用
getSelection().getTextRange().getTextStyle()
但是如果我想从上一张幻灯片中逐字检索文本样式(单独获取每个单词的文本样式),有没有办法做到这一点?
您可以遍历幻灯片的 PageElements,并从每个元素中检索文本样式。
对于每个 PageElement
,您必须检查其类型是否有 TextRange as one of its properties (only Shape and TextCell 个元素(有 TextRange
)。如果您尝试从不包含文本的元素中检索文本,最终可能会出错。
然后,对于您检索的每个 textRange
,您可以遍历其 运行s(此文本中包含的具有不同文本样式的不同段),并检索文本样式每个 运行.
代码示例:
function getTextStyles() {
var slideId = "your-slide-id"; ID of the slide you want to retrieve text style
var presentation = SlidesApp.getActivePresentation();
var slide = presentation.getSlideById(slideId);
var pageElements = slide.getPageElements(); // Get all page elements in slide
pageElements.forEach(function(pageElement) { // Loop through all page elements in slide
if (pageElement.getPageElementType() == "SHAPE") { // Check that current page element is of type "SHAPE"
var textRange = pageElement.asShape().getText(); // Get text belonging to current page element
textRange.getRuns().forEach(function(run) { // Loop through all runs in text
var textStyle = run.getTextStyle(); // Get current row text style
console.log(textStyle);
});
};
});
}
注:
- 上面的代码记录了幻灯片中属于
Shape
元素的所有文本的TextStyle
。TableCell
元素也可以包含文本,因此如果您也想检索该信息,则必须相应地修改脚本(查看 Class Table)。