gpt4 book ai didi

google-docs - 插入图片到指定位置

转载 作者:行者123 更新时间:2023-12-02 22:37:39 25 4
gpt4 key购买 nike

我有一个 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();
}
}
}

最佳答案

这是一段(大致)您想要的代码。

(可能还有其他方法可以做到这一点,它肯定需要一些改进,但总体思路就在那里)

我选择在文档中使用“###”来标记要插入图像的位置,图像必须在您的谷歌驱动器中(或更准确地说在“某些”谷歌驱动器中)。下面的代码使用了我共享的文档和我共享的图像,因此您可以尝试一下。这是 the link to the doc ,不要忘记删除图像并在测试之前在某处放置###(如果有人在你之前运行过代码;-)

function analyze() { // just a name, I used it to analyse docs
var Doc = DocumentApp.openById('1INkRIviwdjMC-PVT9io5LpiiLW8VwwIfgbq2E4xvKEo');
var image = DocsList.getFileById('0B3qSFd3iikE3cF8tSTI4bWxFMGM')
var totalElements = Doc.getNumChildren();
var el=[]
for( var j = 0; j < totalElements; ++j ) {
var element = Doc.getChild(j);
var type = element.getType();
Logger.log(j+" : "+type);// to see doc's content
if (type =='PARAGRAPH'){
el[j]=element.getText()
if(el[j]=='###'){element.removeFromParent();// remove the ###
Doc.insertImage(j, image);// 'image' is the image file as blob
}
}
}
}

编辑:为了使此脚本正常工作,### 字符串在其段落中必须单独,前后没有其他字符...请记住,每次使用 ENTER 强制换行文档创建一个新段落。

关于google-docs - 插入图片到指定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com