【问题标题】: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。
注意:
- Logger.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 -> FOOTER 在BODY 之后的交替顺序中,则上面的代码将不起作用。
很可能,这不是您希望的答案,所以我真诚地道歉。我希望这个答案至少能以任何方式帮助你。