我有一个谷歌的Apps脚本,通过调用body.replaceText替换占位符与一些文本模板文件的副本(“TEXTA”,“TEXTB”);.
现在,我希望把它扩大到包含图像。 有谁知道知道如何做到这一点?
谢谢你,安德烈
编辑:只是为了说清楚我的脚本做什么。 我有一个电子表格创建一个谷歌的形式。 我创建了当表单提交时运行,遍历窗体对应一个表,发现未处理的行,从对应的单元格取值并把它们放在一个谷歌文档的副本的脚本。 在谷歌的形式某些字段是多行文本字段,这就是“\ r \ R”从何而来。
这里有一个解决办法,我到现在为止,没有优雅的拿出,但到目前为止的工作原理:
// 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();
}
}
}