2013-12-11 17 views
5

*「text {logo} text」のような文字列のGoogle文書を持っています {logo}はどのように画像を配置しますか? は、これまで私が試した:段落の特定の点に画像を挿入する

var logoElement = s.findText("{logo}").getElement(); 
logoElement.getParent().insertInlineImage(0,logoBlob); 
s.replaceText("{logo}", ""); 

しかし、これは前に見つかった段落を画像を挿入(または1:後)。どのように私はそれを正確な場所の段落に配置するのですか?

+0

この記事を見ましたか? http://stackoverflow.com/questions/11211434/insert-image-into-a-specified-location –

+0

コメントも読んでください。 –

+1

Serge、投稿(およびコメント)は、段落内の検索文字列が "単独である"と述べています。私の質問は、*その部分だけが置き換えられている段落の真ん中*の検索文字列*に関するものです。私の例では、検索文字列の検索に問題はありませんが、検索文字列の前に置くのではなく、段落全体の前(または後)にイメージを配置します。 – wivku

答えて

1

Sergeからのコメントと正しい方向へ私を向けるためのリンクの元のポストに感謝します。 は、ここで私が今持っているものです。

var s = d.getHeader(); 
var logoResult = s.findText("{logo}"); // search result 
var logoElement = logoResult.getElement(); // the paragraph that contains the placeholder 
var text = logoElement.getText(); 
var placeholderStart = logoResult.getStartOffset(); // character position start placeholder 
var placeholderEnd = logoResult.getEndOffsetInclusive(); // char. position end placeholder 
var parent = logoElement.getParent(); 
var parPosition = parent.getChildIndex(logoElement); 

// add new paragraph after the found paragraph, with text preceding the placeholder 
var beforeAndLogo = s.insertParagraph(parPosition+2, text.substring(0, placeholderStart)); 
var logo = beforeAndLogo.appendInlineImage(logoBlob); // append the logo to that new paragraph 

// add new paragraph after the new logo paragraph, containing the text after the placeholder 
var afterLogo = s.insertParagraph(parPosition+3, text.substring(placeholderEnd+1)); 
afterLogo.merge(); // merge these two paragraphs 

// finally remove the original paragraph 
parent.removeFromParent(); // remove the original paragraph 

それが完了していない、私はまた、すべての属性をコピーする必要があります。 さらに重要なことは、タブ設定(たとえば中央タブ)をコピーしないことです。タブの位置を設定する方法が見つかりませんでした。

+0

属性をコピーする方法が見つかりましたか?私はこの問題に取り組んでおり、getAttributes()でも正しく適用されていないようです。 –

2

は私が

はそれを試してみる...、元の段落の書式を維持し、あなたの回答に基づいて簡単なバージョンを試してみましたが、(私は思う)それは「誰にでもできる」ではないのですが、それは私のテストで動作していますinterrestingトライアルここ;-)

コード:私は役に立つことを願っています

function test(){ 
    placeImage('{logo}','0B3qSFd3iikE3SkFXc3BYQmlZY1U'); 
//This is my page and I’d like to have a {logo} on it right here 
} 


function placeImage(placeHolder,imageId) { 
    var logoBlob = DocsList.getFileById(imageId).getBlob(); 
    var d = DocumentApp.getActiveDocument() 
    var s = d.getHeader(); 
    var logoResult = s.findText(placeHolder); 
    var placeholderStart = logoResult.getStartOffset(); 
    var par = s.getChild(0).asParagraph(); 
    var parcopy = par.copy(); 
    var parLen = par.editAsText().getText().length-1; 
    Logger.log('placeholderStart = '+placeholderStart+' parLen = '+parLen) 
    par.editAsText().deleteText(placeholderStart, parLen); 
    parcopy.editAsText().deleteText(0, placeholderStart+placeHolder.length); 
    var img = s.getChild(0).appendInlineImage(logoBlob); 
    s.appendParagraph(parcopy); 
    parcopy.merge(); 
} 

enter image description here

+0

これは、テキストの読み込み部分内の書式設定属性を削除しませんか? –

3

は、次のコードは、私には結構です。

function insertImage(doc) { 
    // Retrieve an image from the web. 
    var resp = UrlFetchApp.fetch("http://www.google.com/intl/en_com/images/srpr/logo2w.png"); 
    var image = resp.getBlob(); 
    var body = doc.getBody(); 
    var oImg = body.findText("<<Logo1>>").getElement().getParent().asParagraph(); 
    oImg.clear(); 
    oImg = oImg.appendInlineImage(image); 
    oImg.setWidth(100); 
    oImg.setHeight(100); 
} 
+0

この回答はより一般的な問題にはきれいです。おめでとう、そして多くのありがとう! - 美しさと速いコード! –

関連する問題