【问题标题】:Can I add Heading text to the footer in a Google Docs file automatically?我可以自动将标题文本添加到 Google 文档文件的页脚吗?
【发布时间】:2021-05-07 18:51:00
【问题描述】:

我有一份包含大约 20 章、60 多页的文档。每个新章节都从新页面的顶部开始。我想做的是自动将活动章节标题添加到该页面的页脚。我知道这种行为在 Microsoft Word 中是可能的,但我在 Google Docs 中找不到。

可以通过插入分节符手动完成,但这对我来说很不方便,因为我想在超过 1000 个不同的文档中使用这个过程。

例子:

第 1 章称为“测试章”,从第 1 页开始 第 2 章称为“另一章”,从第 4 页开始

然后在第 1、2 和 3 页的页脚应该包含文本“测试章节”。在第 4 页,页脚应包含文本“另一章”。

提前谢谢你!

【问题讨论】:

    标签: google-apps-script footer google-docs document


    【解决方案1】:

    很遗憾,该功能目前仍不可用,并且自 bug 发布以来没有更新。

    我一直在尝试通过 Apps 脚本来规避这个问题,但由于页脚和页眉被视为一个,因此一直没有合适的解决方案。

    默认情况下,更改页脚部分将适用于所有页脚部分,如果它们由分节符分隔,则它们不是按页面排序,而是按添加到文档中的顺序,因此会很棘手,并且会要求您按此顺序添加它们才能使我的代码正常工作。

    对象顺序:

    BODY_SECTION 之后,文档的下一个孩子应该交替使用HEADER_SECTION 然后FOOTER_SECTION

    注意:

    • Lo​​gger.log 部分代码显示了文档的对象顺序。如果它看起来像上面的顺序,那么下面的代码将起作用。

    代码:

    function setHeaderAsFooter() {
      var d = DocumentApp.getActiveDocument();
      var p = d.getBody().getParent(); 
      
      for ( var i = 0; i < p.getNumChildren(); i += 1 ) {
        var c = p.getChild(i);
        var t = c.getType();
        // Check what type is the object
        // Comment out if-block below to see if what is the object order in your document
        Logger.log(t); 
        // Every header you encounter, set it as footer value of the next object
        if ( t === DocumentApp.ElementType.HEADER_SECTION) {
          var f = c.getNextSibling(); 
          f.asFooterSection().setText(c.asHeaderSection().getText());
        }
      }
    }
    

    如果它们不在HEADER -> FOOTERBODY 之后的交替顺序中,则上面的代码将不起作用。

    很可能,这不是您希望的答案,所以我真诚地道歉。我希望这个答案至少能以任何方式帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 2021-07-30
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多