0

我知道可以使用获取所选单词的文本样式 getSelection().getTextRange().getTextStyle()

但是,如果我想逐字从以前的幻灯片中检索文本样式(分别获取每个单词的文本样式),有没有办法做到这一点?

4

1 回答 1

0

您可以遍历幻灯片的PageElements,并从每个元素中检索文本样式。

对于每个PageElement,您必须检查其类型是否具有TextRange作为其属性之一(只有ShapeTextCell元素具有TextRange)。如果您尝试从不包含文本的元素中检索文本,您最终可能会收到错误消息。

然后,对于textRange您检索的每个,您可以遍历其运行(此文本中包含的具有不同文本样式的不同段),并检索每个运行的文本样式。

代码示例:

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);
      });
    };
  });
}

笔记:

  • 上面的代码记录了TextStyle属于Shape幻灯片中元素的所有文本。TableCell元素也可以包含文本,因此如果您也想检索该信息,则必须相应地修改脚本(查看Class Table)。

参考:

于 2020-04-27T11:01:12.347 回答