我使用以下代码替换 Google 文档上的文本:
var sampleDoc = DocumentApp.openById(copyId),
var docBody = sampleDoc.getBody();
docBody.replaceText('%sample_placeholder%','some text');
一切工作正常,但这次我需要将文本放在图像顶部,所以基本上我将 %sample_placeholder%
放在 文本框
上> 在 Insert > Drawing
上插入图像时。上面的代码不再有效。
关于如何搜索和替换文本框中的文本有什么想法吗?
提前致谢!
<小时/>有可用的解决方法吗?
附加信息: 要放置在图像上的文本来自用户输入。该图像实际上是一个矩形标签标签框(用于标记事物),中间有空间可以放入文本。
<小时/>这个想法是,带有图像和图像上的文本(我们将文本称为文本占位符)的 Google 文档将用作模板。此 Google 文档模板正在由 Google Apps 脚本重新复制,并且应使用来自用户的输入替换文本占位符并保存为单独的文件。
它看起来像这样(我得到了设计师创建的图像),文本将放在图像的中间。
最佳答案
由于没有脚本访问谷歌绘图,因此无法在图像上方添加文本。不过,您可以尝试一种可能的解决方法。
如果只有几种可能的图像/文本组合,一种解决方案是为每种可能的组合创建一个图像并将其托管在一个文件夹中。然后,您只需获取带有适当文本的图像并将其插入即可。
我自己以前用过这个(总共 20-30 个图像组合)。以下是我之前使用过的一些代码,与上面您的代码拼凑在一起:
function getImage(imageName, copyId){
var sampleDoc = DocumentApp.openById(copyId);
var docBody = sampleDoc.getBody();
var imageDest = //pick element which can accept image (table cell, paragraph, etc);
imageFolder = DriveApp.getFolderById('Your_folder_ID_here');
image = imageFolder.getFilesByName(imageName).next().getAs('image/png');
imageDest.insertInlineImage(0, image);
}
注意:图像名称应与文件夹中的内容相匹配,例如:“image1_Text1.png”、“image1_Text2.png”等。只需确保您的图像名称易于理解,而无需查看图像。
最困难的部分是为图像找到合适的插入点,因为文档结构很快就会变得棘手。为了帮助解决此问题,我编写了一个小型实用程序脚本来获取文档的子元素,以帮助更好地理解底层结构。请随意使用它:
function getDocElements() {
var doc = DocumentApp.openById(copyId),
body = doc.getBody(),
numElements = doc.getNumChildren(),
elements = [];
for (var i = 0; i < numElements; ++i){
var element = doc.getChild(i),
type = element.getType();
Logger.log(i + " : "+type);}
}
虽然这是一种解决方法,但只要您有有限数量的潜在图像/文本组合,它就可以让您创建所需的效果。
关于google-apps-script - 谷歌应用程序脚本 - 搜索并替换谷歌文档上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956079/