为什么在Google文档中复制表格不会复制嵌入式图形?

布格磁铁

这部分Google Apps脚本代码

    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()应该“深入”吗?

有人对此有解决方法吗?

Tanaike

我相信您的情况和目标如下。

  • 根据您的情况,表格单元格具有嵌入式图像。当您将表格从源文档复制到目标文档时,不会复制图像。
  • 您想要通过包含内嵌图像将表复制到目标文档。

为此,该修改如何?在这种情况下,似乎无法使用直接复制嵌入式图像copy()因此,作为一种解决方法,将表从源文档复制到目标文档之后,如何将图像从源文档复制到目标文档?

修改脚本后,它如下所示。

修改后的脚本:

从:
target.getBody().insertTable(offset++, elem.asTable().copy());
至:
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());
        }
      }
    }
  }
}

注意:

  • 我已经在Google问题跟踪器中搜索了此问题。但是我找不到。那么如何将其报告给问题跟踪器呢?参考

参考文献:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档