2016-11-22 14 views
0

テンプレートとして動作しているアクティブなDocから新しく作成されたDocにヘッダ/フッタをコピーしようとしています。私はテキストを十分に簡単に得ることができますが、私は書式設定、フォントまたは水平方向の配置を取得することができません。GoogleドキュメントヘッダフォーマットをGASでコピー

私の理論は、私は

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 
}) 

Iは、ヘッダの子オブジェクトをループしようとしたそれぞれの子に類似setAttributes(getAttributes)を行うが、無駄に。

私はまた、ヘッダー/フッターのオブジェクトのcopy()機能が有望だろうと思ったが、私は、これは、テキストや書式なしで空白フッターを生成し、

newDocFooter = activeDocFooter.copy(); 

を試してみました。しかしとき。

1つのヘッダー/フッターから別のヘッダー/フッターに、書式設定、フォント、水平方向の配置をコピーするよい方法はありますか?

答えて

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); 
    } 
} 

私が言う幅広くのみすべての罰金を越えコピーなど大胆な、水平センタリング、水平ルールなどの書式ので、しかし、奇妙なことに、リストは番号がつけられてから箇条書きに変わるように見えるので、翻訳で何かが失われました。

少し微調整が必​​要な場合もありますが、もっと簡単な方法がありますが、他に何もない場合は、これが始まる可能性があります。

ソース文書:

enter image description here

ターゲットドキュメント、リストタイプはかなり右ではないことに注意してください!:

enter image description here

はそれがお役に立てば幸いです。

関連する問題