我正在尝试将作为模板的活动文档中的页眉/页脚复制到新创建的文档。我能够轻松地获得文本,但我无法获得格式,字体或水平对齐。
我的理论是,我可以做类似
的事情newDocHeader.setAttributes(activeDocHeader.getAttributes());
但是,我仍然只能看到左对齐的纯文本。检查标题上的attributes
对象时,我得到以下内容:
({
FONT_SIZE:null,
ITALIC:null,
STRIKETHROUGH:null,
FOREGROUND_COLOR:null,
BOLD:null,
LINK_URL:null,
UNDERLINE:null,
FONT_FAMILY:null,
BACKGROUND_COLOR:null
})
我试图遍历Header的Child对象并对每个孩子执行类似的setAttributes(getAttributes)
,但无济于事。
我还认为Header / Footer对象上的copy()
函数很有希望,但是当我尝试时
newDocFooter = activeDocFooter.copy();
但是,这会生成没有文本或格式的空白页脚。
有没有一种方法可以将格式,字体和水平对齐方式从一个页眉/页脚复制到另一个页眉/页脚?
答案 0 :(得分:0)
我完全不熟悉DocumentApp
,但广泛对我有用:
/**
* Copies headers from one document to another.
* @param {string} source The source document URL.
* @param {string} target The target document URL.
*/
function copyHeader(source, target) {
// Used to map from child types to required "append<X>" method
var functionMap = {
PARAGRAPH: 'appendParagraph',
LIST_ITEM: 'appendListItem',
HORIZONTAL_RULE: 'appendHorizontalRule',
IMAGE: 'appendImage',
TABLE: 'appendTable'
};
var t = DocumentApp.openByUrl(target);
var s = DocumentApp.openByUrl(source);
var sourceHeader = s.getHeader();
var targetHeader = t.getHeader();
// If there is no header in the target doc, add one
if (!targetHeader) {
targetHeader = t.addHeader();
}
targetHeader.clear();
// Docs requires one child element, so one will remain even
// after clearing. Get a reference to it so it can be removed
var targetNumChild = targetHeader.getNumChildren();
if (targetNumChild === 1) {
var placeholderElement = targetHeader.getChild(0);
}
// Copy across each element to the target doc
var c = sourceHeader.getNumChildren();
for (var i = 0; i < c; i++) {
var element = sourceHeader.getChild(i).copy();
var method = functionMap[element.getType()];
targetHeader[method](element);
}
// Remove the saved element if required
if (targetHeader.getNumChildren() > 1 && placeholderElement) {
targetHeader.removeChild(placeholderElement);
}
}
我之所以广泛地说,只是因为大胆,横向居中,水平规则等格式都被复制在精美但奇怪的列表中,似乎从编号转变为项目符号,因此在翻译中丢失了一些内容。
可能需要稍微调整,肯定有一种更简单的方法,但在没有任何其他情况下,这可能是一个开始。
来源文件:
目标文件,请注意列表类型不是很正确!:
希望它有所帮助。