google-apps-script - 用谷歌文档中的表格替换图像
问题描述
我想用包含 Google Doc 中该图像的表格替换选定的图像。当我运行代码时,没有表被插入到谷歌文档中。
function insertImage(ID, caption) {
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var elements = selection.getSelectedElements();
var tImg = elements[0].getElement();
var cells = [
[tImg.asInlineImage(), ID+': '+caption]
];
var parentElement = tImg.getParent();
parentElement.insertTable(parentElement.getChildIndex(tImg) + 1, cells)
tImg.removeFromParent();
}
}
图像不会被删除,表格也不会被添加。谢谢!
解决方案
- 您想将选定的图像替换为表格。
- 您希望将所选图像插入到插入表格的单元格的第一列。文本放在第二列。
如果我对你的问题的理解是正确的,那么这个修改怎么样?
修改点:
- Method of
insertTable()
是 Class Body 的方法。 - 需要检索图像的位置作为文档正文的子索引。
- 插入表格后,图像被插入到插入表格的单元格中。
- 在这个修改中,当图像被删除时,它会删除图像的段落。通过这种方式,可以将图像替换为表格而不包括换行符。这种情况与在单元格中插入图像相同。
getSelectedElements()
已弃用。所以请使用getRangeElements()
.
当以上几点反映到脚本中时,它变成如下。
修改后的脚本:
function insertImage(ID, caption) {
// ID = "sample ID"; // for sample
// caption = "sample caption"; // for sample
var doc = DocumentApp.getActiveDocument(); // Added
var body = doc.getBody(); // Added
var selection = doc.getSelection(); // Modified
if (selection) {
var elements = selection.getRangeElements(); // Modified
var e = elements[0].getElement(); // Modified
if (e.getType() == DocumentApp.ElementType.INLINE_IMAGE) { // Added
var tImg = e.asInlineImage(); // Modified
var parentElement = tImg.getParent();
var cells = [["", ID + ': ' + caption]]; // Modified
var table = body.insertTable(body.getChildIndex(parentElement), cells); // Modified
var cell = table.getCell(0, 0); // Added
cell.insertImage(0, tImg.getBlob()).getParent().asParagraph().getNextSibling().removeFromParent(); // Added
tImg.getParent().asParagraph().removeFromParent(); // Modified
}
}
}
输入:
输出:
笔记:
- 在您的脚本中,使用了所选元素的第一张图像。所以我跟着这个。
参考:
如果这不是你想要的,请告诉我。我想修改它。
推荐阅读
- sql - 检查 Postgres 中的计数
- unity3d - 当我添加条件时,Unity Animation OnStateExit 不起作用
- java - 在 JNA 中传递参数
- python - 用于输入字数要求、测试、存储、逆向打印单词和字母的Python程序。
- html - jquery数据表中每列的最大宽度
- sql - 如何使用 Node.js、Express 和 SQL DB 编写 POST REST API?
- amazon-web-services - 在 AWS Api Gateway 中重命名端点并保持向后兼容性
- wordpress - 如何撤消 301 永久重定向的影响,并使域再次指向原始子域?
- sql-server - 如何将数据库归档到新数据库?MSSQL 存档
- amazon-web-services - CI/CD 管道的 IAM 权限