【发布时间】:2012-06-26 16:04:40
【问题描述】:
我有一个 Google Apps 脚本,它通过调用 body.replaceText('TextA', 'TextB'); 将模板文档副本中的占位符替换为一些文本。
现在我想扩展它以包含图像。有人知道怎么做吗?
谢谢你, 安德烈
编辑:只是为了弄清楚我的脚本是做什么的。我在电子表格中创建了一个 Google 表单。我创建了一个脚本,它在表单提交时运行,遍历与表单对应的工作表,查找未处理的行,从相应的单元格中获取值并将它们放入 Google 文档的副本中。 Google 表单中的某些字段是多行文本字段,这就是 '\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();
}
}
}
【问题讨论】:
-
您的脚本是如何使用此替换功能添加 '\r\r' 的?我想我错过了什么?
标签: google-docs google-apps-script google-docs-api