2017-09-04 83 views
0

背景: 公司正在更新样式,并且我制作了一个应将现有文档更新为当前样式配置文件的插件。使用应用程序脚本在模板之后格式化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默认值设置。如果是这样,我可以访问/更改默认值吗?

+0

我的理解是'null'出现在风格没有明确设置的地方,所以你是正确的。否则,我看不到任何在你的例子中不起作用的东西。脚本是否按预期将默认样式更改为模板样式? –

+0

除了这是一个对象,所以它应该看起来像{FONT_SIZE:NULL,... ETC}结帐我的答案。我最近在Google Docs中构建了一个信封打印机。 – Cooper

+0

@AntonDementiev Heading1在设置上面的前景色(蓝色)后仍然会变色 默认情况下会因文档而异,我不知道是否可以通过编程方式更改它们。 –

回答

0

这是我最近用信封打印机做的事情。这是一个加载对象的相当标准的方式。

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,从字符串到枚举属性;只改进了代码质量。 –

相关问题