【问题标题】:Is it possible to get text style for each words individually?是否可以单独获取每个单词的文本样式?
【发布时间】:2020-04-26 05:53:47
【问题描述】:

我知道可以使用 getSelection().getTextRange().getTextStyle()

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

【问题讨论】:

    标签: google-apps-script google-slides textrange textstyle


    【解决方案1】:

    您可以遍历幻灯片的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);
          });
        };
      });
    }
    

    注意:

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

    参考:

    【讨论】:

    • 我不知道 getRuns() 方法...谢谢一百万!
    • @SafwatAliKhan 不客气。如果您认为此答案有帮助,请考虑accepting it。这很有用,因为该社区依靠它与其他用户分享知识。
    猜你喜欢
    • 2023-02-09
    • 2012-11-09
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多