【问题标题】:Google Documents: set heading as defined in current documentGoogle 文档:设置当前文档中定义的标题
【发布时间】:2013-11-03 23:55:32
【问题描述】:

我正在编写一个脚本来选择包含光标的段落,将文本设置为大写并将段落标题更改为 HEADING1。 但是,该段落设置为“全局”HEADING1,而不是当前文档中定义的 HEADING1。这是代码。

function SetSceneHeading() {
  var cursor = DocumentApp.getActiveDocument().getCursor();
  var element = cursor.getElement();
  var paragraph = [];
  if (element.getType() != 'PARAGRAPH') {
    paragraph = element.getParent().asParagraph();
  }
  else paragraph = element.asParagraph();
  var txt = paragraph.getText();
  var TXT = txt.toUpperCase();
  paragraph.setText(TXT);
  paragraph.setHeading(DocumentApp.ParagraphHeading.HEADING1);
}

有没有办法将段落设置为“当前”标题1?谢谢。

【问题讨论】:

  • 您是否需要标题属性用于视觉突出显示以外的其他用途?我的意思是创建一个目录或什么?我问这个是因为“正常”属性是完全可用的并且没有这个固有的限制......所以它可能是一个可能的解决方法。
  • 我正在尝试制作一个脚本编写模板,出于各种原因,我更喜欢将 HEADING1 作为 SceneHeading 样式。作为一种解决方法,我可能可以将段落设置为 HEADING1,然后根据自定义 HEADING1 设置属性...

标签: google-apps-script google-drive-api google-docs


【解决方案1】:

我找到了一种将段落设置为用户定义标题的解决方法。基本上,您首先使用 setHeading() 设置标题,然后将先前操作搞砸的属性设置为“null”。这样段落是根据用户定义的标题设置的。

 function MyFunction ()
 var paragraph = ....
 paragraph.setHeading(DocumentApp.ParagraphHeading.HEADING1);
 paragraph.setAttributes(ResetAttributes());


 function ResetAttributes() {
 var style = {};
 style[DocumentApp.Attribute.FONT_SIZE] = null;
 style[DocumentApp.Attribute.BOLD] = null;
 style[DocumentApp.Attribute.SPACING_BEFORE] = null;
 style[DocumentApp.Attribute.SPACING_AFTER] = null;
 return style;
 }

我做了一些测试,FONT_SIZE BOLD SPACING_BEFORE SPACING_AFTER 似乎是需要重置的属性。根据具体情况,它们可能更多。

【讨论】:

  • 不错的解决方法!谢谢分享,请考虑在issue 2373 cmets上发帖。
【解决方案2】:

不幸的是,目前看来这不可能,我认为有一个未解决的问题是相关的:issue 2373(已确认状态),您可以加注星标以了解任何增强功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2021-05-24
    • 2015-11-14
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多