在 google 文档中用 table 替换图像
Replace image with table in google doc
我想在 Google 文档中用包含该图像的 table 替换所选图像。当我 运行 代码时,没有 table 被插入到 google 文档中。
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();
}
}
图像未删除,table 未添加。谢谢!
- 您想将所选图像替换为 table。
- 您想将所选图像添加到插入的单元格的第 1 列 table。文本放在第二列。
如果我对你问题的理解是正确的,那么修改一下怎么样?
修改点:
insertTable()
的方法就是Class正文的方法。
- 需要检索图片所在的地方作为文档正文的子索引
- 在插入 table 之后,图像被插入到插入的 table 的单元格中。
- 本次修改,删除图片时,删除图片的段落。这样,可以将图像替换为 table 而不包括换行符。这种情况与在单元格中插入图片是一样的。
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
}
}
}
输入:
输出:
注:
- 在您的脚本中,使用了所选元素的第一个图像。所以我遵循了这个。
参考文献:
如果这不是您想要的,请告诉我。我想修改一下。
我想在 Google 文档中用包含该图像的 table 替换所选图像。当我 运行 代码时,没有 table 被插入到 google 文档中。
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();
}
}
图像未删除,table 未添加。谢谢!
- 您想将所选图像替换为 table。
- 您想将所选图像添加到插入的单元格的第 1 列 table。文本放在第二列。
如果我对你问题的理解是正确的,那么修改一下怎么样?
修改点:
insertTable()
的方法就是Class正文的方法。- 需要检索图片所在的地方作为文档正文的子索引
- 在插入 table 之后,图像被插入到插入的 table 的单元格中。
- 本次修改,删除图片时,删除图片的段落。这样,可以将图像替换为 table 而不包括换行符。这种情况与在单元格中插入图片是一样的。
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
}
}
}
输入:
注:
- 在您的脚本中,使用了所选元素的第一个图像。所以我遵循了这个。
参考文献:
如果这不是您想要的,请告诉我。我想修改一下。