这段谷歌应用脚本代码
for (let el = 0; el < tempDocBody.getNumChildren(); el++) {
const elem = tempDocBody.getChild(el);
Logger.log(
"ProcessMainTable [%s] %s %s",
el,
elem.getType().toString(),
elem.asText().getText(),
);
switch (elem.getType()) {
case DocumentApp.ElementType.TABLE:
target.getBody().insertTable(offset++, elem.asTable().copy());
break;
case DocumentApp.ElementType.PARAGRAPH:
target.getBody().insertParagraph(offset++, elem.asParagraph().copy());
break;
}
}
除了嵌入在TABLE单元格中的图片没有被复制到目标单元格之外,其他的工作都很好,比如字体和格式。其他所有的东西都能很好的完成,比如字体和格式。是不是 .copy()
应该是 "深 "吗?
有谁有办法解决这个问题吗?
我认为你的情况和目标如下。
对此,如何修改呢?在这种情况下,似乎不能直接使用内联图像复制。copy()
. 所以作为一个变通的办法,把表格从源Document复制到目标Document后,把源Document中的图片放到目标Document中呢?
当你的脚本被修改后,就变成了下面的样子。
target.getBody().insertTable(offset++, elem.asTable().copy());
To:var srcTable = elem.asTable().copy();
var dstTable = target.getBody().insertTable(offset++, srcTable);
for (var i = 0; i < srcTable.getNumRows(); i++) {
for (var j = 0; j < srcTable.getRow(i).getNumCells(); j++) {
var cell = srcTable.getCell(i, j);
for (var k = 0; k < cell.getNumChildren(); k++) {
var paragraph = cell.getChild(k).asParagraph();
for (var l = 0; l < paragraph.getNumChildren(); l++) {
var child = paragraph.getChild(l);
if (child.getType() == DocumentApp.ElementType.INLINE_IMAGE) {
var srcImg = child.asInlineImage();
dstTable.getCell(i, j).getChild(k).asParagraph().clear().insertInlineImage(l, srcImg.getBlob()).setWidth(srcImg.getWidth()).setHeight(srcImg.getHeight());
}
}
}
}
}