2017-09-04 140 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,從字符串到枚舉屬性;只改進了代碼質量。 –

相關問題