Wstaw obraz do określonej lokalizacji
Mam skrypt Google Apps, który zastępuje symbole zastępcze w kopii dokumentu szablonu pewnym tekstem, wywołując body.replaceText („TextA”, „TextB”);.
Teraz chcę go rozszerzyć, aby zawierał obrazy. Czy ktoś ma pomysł, jak to zrobić?
Dziękuję, Andrey
EDIT: Żeby wyjaśnić, co robi mój skrypt. Mam formularz Google utworzony w arkuszu kalkulacyjnym. Stworzyłem skrypt, który działa po przesłaniu formularza, przegląda arkusz odpowiadający formularzowi, znajduje nieprzetworzone wiersze, pobiera wartości z odpowiednich komórek i umieszczam je w kopii dokumentu Google. Niektóre pola w formularzu Google są wieloliniowymi polami tekstowymi, stąd pochodzi „\ r \ r”.
Oto obejście, które do tej pory wymyśliłem, nie jest eleganckie, ale działa do tej pory:
// replace <IMG src="URL"> with the image fetched from URL
function processIMG_(Doc) {
var totalElements = Doc.getNumChildren();
for( var j = 0; j < totalElements; ++j ) {
var element = Doc.getChild(j);
var type = element.getType();
if (type =='PARAGRAPH'){
var par_text = element.getText();
var start = par_text.search(new RegExp('<IMG'));
var end = par_text.search(new RegExp('>'));
if (start==-1)
continue;
// Retrieve an image from the web.
var url = getURL_(par_text.substring(start,end));
if(url==null)
continue;
// Before image
var substr = par_text.substring(0,start);
var new_par = Doc.insertParagraph(++j, substr);
// Insert image
var resp = UrlFetchApp.fetch(url);
new_par.appendInlineImage(resp.getBlob());
// After image
var substr = par_text.substring(end+1);
Doc.insertParagraph(++j, substr);
element.removeFromParent();
j -= 2; // one - for latter increment; another one - for increment in for-loop
totalElements = Doc.getNumChildren();
}
}
}