使用应用程序脚本在模板之后格式化Google文档
问题描述:
背景: 公司正在更新样式,并且我制作了一个应将现有文档更新为当前样式配置文件的插件。使用应用程序脚本在模板之后格式化Google文档
解决方案: 一个谷歌应用程序脚本[附加]读取一个模板的文档正确格式化并更新活动文档镜像。
段:这不正常工作
var deltaAttri = [
"BACKGROUND_COLOR",
"FOREGROUND_COLOR",
"FONT_FAMILY",
"FONT_SIZE",
"SPACING_AFTER",
"SPACING_BEFORE"
];
var baseAttr = heading1.getAttributes();
var templateAttri = templateHeading1.getAttributes();
for(var d = 0;d<deltaAttri.length;d++){
baseAttr[deltaAttri[d]] = templateAttri [deltaAttri[d]];
}
heading1.setAttributes(baseAttr);
问题: 几乎每一个属性取我(heading1.getAttributes())为空。
Heading1={
FONT_SIZE=null,
SPACING_BEFORE=null,
SPACING_AFTER=null,
FOREGROUND_COLOR=#073763,
FONT_FAMILY=null,
BACKGROUND_COLOR=null
}
我这样做是错误的,或者这是外部扫描什么使用应用程序脚本?
我最初以为null默认值设置。如果是这样,我可以访问/更改默认值吗?
答
这是我最近用信封打印机做的事情。这是一个加载对象的相当标准的方式。
function setupDocument()
{
var doc=DocumentApp.getActiveDocument();
var envelope10={};
envelope10[DocumentApp.Attribute.PAGE_HEIGHT]=296;
envelope10[DocumentApp.Attribute.PAGE_WIDTH]=684;
envelope10[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
envelope10[DocumentApp.Attribute.FONT_SIZE] = 14;
envelope10[DocumentApp.Attribute.BOLD] = true;
envelope10[DocumentApp.Attribute.LINE_SPACING]=1;
doc.getBody().clear().setAttributes(envelope10);
}
+0
更新deltaAttri,从字符串到枚举属性;只改进了代码质量。 –
我的理解是'null'出现在风格没有明确设置的地方,所以你是正确的。否则,我看不到任何在你的例子中不起作用的东西。脚本是否按预期将默认样式更改为模板样式? –
除了这是一个对象,所以它应该看起来像{FONT_SIZE:NULL,... ETC}结帐我的答案。我最近在Google Docs中构建了一个信封打印机。 – Cooper
@AntonDementiev Heading1在设置上面的前景色(蓝色)后仍然会变色 默认情况下会因文档而异,我不知道是否可以通过编程方式更改它们。 –