2013-12-11 8 views
5

के विशिष्ट बिंदु पर छवि डालें * मेरे पास "टेक्स्ट {लोगो} टेक्स्ट" जैसे स्ट्रिंग वाला Google दस्तावेज़ है " कोई छवि कहां रखें जहां {लोगो} है? अब तक मैंने कोशिश की:अनुच्छेद

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- निर्दिष्ट- स्थान –

+0

टिप्पणियां भी पढ़ें। –

+1

सर्ज, पोस्ट (और टिप्पणियां) एक पैराग्राफ में खोज स्ट्रिंग "अकेले रहना" बताती है। मेरा प्रश्न एक पैराग्राफ के बीच * में एक खोज स्ट्रिंग * के बारे में है, जहां * केवल * उस भाग को प्रतिस्थापित किया गया है। मेरे उदाहरण में खोज स्ट्रिंग को खोजने में कोई समस्या नहीं है, लेकिन यह पूरी पैराग्राफ से पहले (या उसके बाद) पूरी तरह से खोज स्ट्रिंग के सामने रखने के बजाय छवि को रखती है। – wivku

उत्तर

1

सर्ज से टिप्पणी और सही दिशा में मुझे इंगित करने के लिए लिंक के मूल पोस्ट के लिए धन्यवाद। यहाँ मैं अब है:

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

यह उत्तर एक और सामान्य समस्या के लिए सुंदर है। बधाई - और बहुत धन्यवाद! सौंदर्य और तेज़ कोड पर! –

संबंधित मुद्दे