【问题标题】:Google Documents: get active paragraph from cursor positionGoogle Documents:从光标位置获取活动段落
【发布时间】:2013-11-01 20:13:57
【问题描述】:

我正在尝试编写一个脚本,将光标周围的文本设置为大写,并将封闭段落设置为 HEADING1。 当我不知道如何使用 getCursor() 方法获取包含光标的段落时,我可以做第一件事。这是我尝试过的:

 var cursor = DocumentApp.getActiveDocument().getCursor();
 var element = cursor.getElement();
 var paragraph = element.asParagraph();

但是,element 是 TEXT 元素,不能转换为 PARAGRAPH。有没有办法从文本元素中获取段落?

谢谢。

【问题讨论】:

    标签: google-apps-script google-docs


    【解决方案1】:

    我花了一些时间,但我明白了 ;-) 段落是光标周围 textElement 的父级。

    我添加了一些日志,因为我很好奇 ;-)

    function myFunction() {
      var cursor = DocumentApp.getActiveDocument().getCursor();
      var element = cursor.getElement();
      var paragraph = element.getParent().asParagraph();
      var att = paragraph.getAttributes();// optional
      Logger.log(att); // just out of curiosity... if you want to see
      var style = {};
      style[DocumentApp.Attribute.HEADING] =
        DocumentApp.ParagraphHeading.HEADING1;
      paragraph.setAttributes(style);
      var att = paragraph.getAttributes();// optional
      Logger.log(att); // just out of curiosity... if you want to see
      }
    

    【讨论】:

    • 谢谢,getParent() 是关键:) 但是您的代码提出了另一个问题...当您将段落设置为 HEADING1 时,该段落是根据“全局”HEADING1 设置的,而不是 HEADING1在文档中定义。我使用的是 setHeading() 而不是 setAttributes() 但结果是一样的。有什么线索吗?
    • 正如你所说,这引发了另一个问题......然后在新线程中提出它,它会更加明显。同时考虑接受这个:-)
    • 也许他们的 api 已经改变了,但是当我运行这段代码时,我得到了这个错误:BODY_SECTION can't be cast to PARAGRAPH.
    • element.asParagraph(); 而不是 element.getParent().asParagraph(); 为我工作。
    【解决方案2】:
    var cursor = DocumentApp.getActiveDocument().getCursor();
    var surroundingText = cursor.getSurroundingText().getText();
    

    surroundingText 将为您提供当前段落。

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 2022-10-05
      • 2016-04-17
      • 1970-01-01
      • 2014-03-23
      • 2016-02-09
      • 2011-09-19
      • 2018-06-17
      • 2012-05-05
      相关资源
      最近更新 更多