2013-10-04 9 views
5

में findtext की बाल अनुक्रमणिका प्राप्त करें मेरा लक्ष्य किसी अन्य दस्तावेज़ की सामग्री के साथ Google ड्राइव दस्तावेज़ में पाठ के एक टुकड़े को प्रतिस्थापित करना है।google API स्क्रिप्ट

मैं दस्तावेज़ को अन्य दस्तावेज़ में एक निश्चित स्थिति में सम्मिलित करने में सक्षम हूं, लेकिन मुझे उस पाठ के टुकड़े के बच्चे सूचकांक को निर्धारित करने में समस्या हो रही है जिसे मैं प्रतिस्थापित करना चाहता हूं। यहां मेरे पास अब तक है:

function replace(docId, requirementsId) { 

var body = DocumentApp.openById(docId).getActiveSection(); 
var searchResult = body.findText("<<requirementsBody>>"); 
var pos = searchResult.?? // Here I would need to determine the position of the searchResult, to use it in the insertParagraph function below 

var otherBody = DocumentApp.openById(requirementsId).getActiveSection(); 
var totalElements = otherBody.getNumChildren(); 
for(var j = 0; j < totalElements; ++j) { 
var element = otherBody.getChild(j).copy(); 
    var type = element.getType(); 
    if(type == DocumentApp.ElementType.PARAGRAPH) { 
     body.insertParagraph(pos,element); 
    } else if(type == DocumentApp.ElementType.TABLE) { 
    body.insertTable(pos,element); 
    } else if(type == DocumentApp.ElementType.LIST_ITEM) { 
    body.insertListItem(pos,element); 
    } else { 
    throw new Error("According to the doc this type couldn't appear in the body: "+type); 
    } 
} 


}; 

किसी भी सहायता की सराहना की जाएगी।

उत्तर

5

findText()

एक RangeElement देता है।

आप

var r = rangeElement.getElement()

का उपयोग पाया पाठ वाले तत्व प्राप्त करने के लिए कर सकते हैं।

अपने childIndex प्राप्त करने के लिए आप ब्रूस का जवाब मैं इस समस्या का समाधान यह पता लगाने में सक्षम था करने के लिए

r.getParent().getChildIndex(r) 
2

धन्यवाद उपयोग कर सकते हैं, फिर भी अगर मैं किसी अन्य दस्तावेज़ मैं वास्तव में सूचकांक को खोजने के लिए की जरूरत से तत्वों डालने गया था पाए गए पाठ के अभिभावक के रूप में, जैसा कि पाया गया पाठ अनुच्छेद तत्व के अंदर केवल एक टेक्स्ट तत्व था। इसलिए, मुझे पैराग्राफ एलिमेंट की अनुक्रमणिका खोजने की आवश्यकता है, और उसके बाद उस पैराग्राफ के संबंध में नए तत्व डालें।

कोड इस तरह दिखता है:

var foundTag = body.findText(searchPattern); 
    if (foundTag != null) { 
    var tagElement = foundTag.getElement(); 
    var parent = tagElement.getParent(); 
    var insertPoint = parent.getParent().getChildIndex(parent); 
    var otherBody = DocumentApp.openById(requirementsId).getActiveSection(); 
    var totalElements = otherBody.getNumChildren(); 

    for(var j = 0; j < totalElements; ++j) { 
    ... then same insertCode from the question above ... 
     insertPoint++; 
    } 
+0

जब एक इनलाइन छवि findText स्थान से पहले वहाँ है, यह आवश्यक तरह छवि से पहले पैराग्राफ के बच्चे सूचकांक देता है, छवि के बाद नहीं। क्या आसपास कोई काम है? –