Google Apps Script (Javascript) - findText returns location relative to inline image, not start of paragraph -


i trying insert image in middle of paragraph results of findtext, when there other images before in paragraph doesn't work planned.

currently, code(partially based on the responses question) works finding place needs inserted, getting child index of paragraph findtext() returned. however, if there inline image, chid index returned start of paragraph, offset findtext characters end of image, not start of paragraph.

here relevant part of script:

function placeimage(start, end) {   var d = documentapp.getactivedocument()   var s = d.getbody();    var logoresult = s.findtext(start);   var placeholderstart = logoresult.getstartoffset(); //position of image insertion   var logoresult2 = s.findtext(end, logoresult);   var placeholderend = logoresult2.getstartoffset(); //text between placeholderstart , placeholderend permanently deleted    var textelement = logoresult.getelement();   var paragraph= textelement.getparent();   var childindex = paragraph.getparent().getchildindex(paragraph);  //gets paragraph number    var par = s.getchild(childindex).asparagraph(); //entire paragraph containing point of insertion   var parcopy = par.copy();   var totallen = par.editastext().gettext().length-1;    par.editastext().deletetext(placeholderstart, totallen); //delete text after insertion point; added later parcopy   parcopy.editastext().deletetext(0, placeholderend + 1); //this remaining text gets pasted @ end    var resp = urlfetchapp.fetch("https://www.google.com/images/srpr/logo11w.png");   var logoblob = resp.getblob();   var img = s.getchild(childindex).appendinlineimage(logoblob);   var tomerge = s.insertparagraph(childindex+1, parcopy);   tomerge.merge();   return 1; } 

a paragraph contains several child elements e.g. strings of text or images. need index of text element inside paragraph, not index of paragraph inside document. try this

function placeimage(start, end) {   var d = documentapp.getactivedocument()   var s = d.getbody();    var logoresult = s.findtext(start);   var placeholderstart = logoresult.getstartoffset(); //position of image insertion   var logoresult2 = s.findtext(end, logoresult);   var placeholderend = logoresult2.getendoffsetinclusive(); //text between placeholderstart , placeholderend permanently deleted    var textelement = logoresult.getelement();    var text = textelement.gettext();   var paragraph = textelement.getparent();   var childindex = paragraph.getchildindex(textelement);  //gets index of text element in paragaph    var textsecondhalf = text.substring(placeholderend + 1);   textelement.deletetext(placeholderstart, text.length-1);   paragraph.inserttext(childindex+1, textsecondhalf);    var resp = urlfetchapp.fetch("https://www.google.com/images/srpr/logo11w.png");   var logoblob = resp.getblob();   paragraph.insertinlineimage(childindex+1, logoblob); } 

Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -