我有一个简单的小应用程序脚本,可根据要求刷新我们的动态徽标。问题是如果设计师检查“不同的第一页页眉/页脚”复选框,我无法定位标题。如果检查了不同的标题,是否有目标?
以下是我目前正在使用的代码:
function onOpen() {
DocumentApp.getUi().createMenu('Branding')
.addItem('Update Branding', 'updateLogo')
.addToUi();
}
function updateLogo() {
var doc = DocumentApp.getActiveDocument();
var header = doc.getHeader();
if (header) {
var images = header.getImages();
var logoWidth = 250;
if (images.length > 0) {
var image = images[0];
logoWidth = image.getWidth(); // pixels
image.removeFromParent();
}
var freshLogo = UrlFetchApp.fetch("http://example.com/logo.jpg").getBlob();
var newImage = header.insertImage(0, freshLogo);
var logoRatio = newImage.getHeight() / newImage.getWidth();
newImage.setWidth(logoWidth);
newImage.setHeight(newImage.getWidth() * logoRatio);
}
}
答案 0 :(得分:2)
在完成Eric's Google Issues link中的一些未解决的问题后,我发现了以下内容。
这是我找到的,我会用一个干净的例子来说明。
打开脚本编辑器并运行以下功能:
function getSectionText() {
var d = DocumentApp.getActiveDocument();
var p = d.getBody().getParent();
// let's loop through all the child elements in the document
for ( var i = 0; i < p.getNumChildren(); i += 1 ) {
var t = p.getChild(i).getType();
if ( t === DocumentApp.ElementType.BODY_SECTION ) continue; // not interested in the body
if ( t === DocumentApp.ElementType.HEADER_SECTION ) {
var h = p.getChild(i).asHeaderSection().getText();
Logger.log( 'Child index number: ' + i );
Logger.log( h );
} else if ( t === DocumentApp.ElementType.FOOTER_SECTION ) {
var f = p.getChild(i).asFooterSection().getText();
Logger.log( 'Child index number: ' + i );
Logger.log( f );
}
}
}
当您查看日志文件时,您应该看到以下输出:
[17-09-22 16:33:03:628 AEST] Child index number: 1
[17-09-22 16:33:03:629 AEST] Common header
[17-09-22 16:33:03:633 AEST] Child index number: 2
[17-09-22 16:33:03:633 AEST] Common footer
[17-09-22 16:33:03:636 AEST] Child index number: 3
[17-09-22 16:33:03:637 AEST] Different first header
[17-09-22 16:33:03:659 AEST] Child index number: 4
[17-09-22 16:33:03:660 AEST] Different first footer
这可以帮助您与常见页面和首页页眉和页脚进行交互。
答案 1 :(得分:0)
不幸的是,Apps Script的DocumentApp并不知道不同的首页页眉/页脚设置。请在此处提交功能请求:https://code.google.com/p/google-apps-script-issues/issues/list
答案 2 :(得分:0)
这个应该有效。您可能必须使用doc.getHeader()
(第一页标题)以及DHeader
(第2页,第3页,第4页...页眉。)。
var doc = DocumentApp.getActiveDocument();
var header = doc.getHeader();
var DHeader = header.getParent().getChild(2).asHeaderSection();
/*
Some may seem pointless as seeing that getParent().getChild(2)
may be replaced somehow with getNextSibling(), however,
googlescript does not allow
the use of getNextSibling() for a HeaderSection
*/