邮件合并:无法附加模板中的图像

时间:2015-06-01 14:34:34

标签: google-apps-script google-docs

我正在尝试创建一个邮件合并功能,以便根据一个简单的模板创建一个文档。 我尝试使用以下函数来复制模板元素,但是我遇到了(内联)图像的问题,它们总是显示为PARAGRAPH而不是INLINE_IMAGE,并且出现以下图标而不是图像:

enter image description here

以下是代码:

function appendToDoc(src, dst) {
  // iterate accross the elements in the source adding to the destination
  for (var i = 0; i < src.getNumChildren(); i++) {
    appendElementToDoc(dst, src.getChild(i));
  }
}

function appendElementToDoc(doc, object)
{
    var element = object.copy();
    var type = object.getType();

    if (type == DocumentApp.ElementType.PARAGRAPH) {
        doc.appendParagraph(element);
    } else if (type == DocumentApp.ElementType.TABLE) {
      doc.appendTable(element);
    } else if (type== DocumentApp.ElementType.INLINE_IMAGE) { // This is never called :(
       var blob = element.asInlineImage().getBlob();
       doc.appendImage(blob); 
    }
}

关于如何解决这个问题的任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,内嵌图像包含在一个段落中,因此我们必须在段落中检查图像类型。

所以检查的代码是这样的:

if (type == DocumentApp.ElementType.PARAGRAPH) {
      if (element.asParagraph().getNumChildren() != 0 && element.asParagraph().getChild(0).getType() == DocumentApp.ElementType.INLINE_IMAGE) {
        var blob = element.asParagraph().getChild(0).asInlineImage().getBlob();
        doc.appendImage(blob);
      }
      else doc.appendParagraph(element.asParagraph());
    }

希望有所帮助!