1

https://developers.google.com/apps-script/class_documentbodysection#appendImage

基本的には、ドキュメントを開いてその DocumentBodySection を取得し、要素を繰り返し処理して (Element.copy()) コピーし、分離された深いコピーを取得してから、その要素を別のドキュメントに追加します。

これは段落やその他の要素タイプではうまく機能しますが、インライン画像になると、結果のドキュメントで壊れたリンクが表示されます。

誰かがそれを機能させましたか?

ここにスニペットがあります

function appendSection(doc, section) {
  for (i=0; i<section.getNumChildren(); i++) {
    var el = section.getChild(i);
    if (el.getType() == DocumentApp.ElementType.PARAGRAPH)
    {
      if (el.getNumChildren() != 0) {
        var el_child = el.getChild(0);
        if (el_child.getType() == DocumentApp.ElementType.INLINE_IMAGE)
        {
          doc.appendImage(el_child.asInlineImage().copy());
          Logger.log("Image");
        }
      }
      doc.appendParagraph(el.copy());
      Logger.log("Paragraph");
    }
  }     
  return doc
}

前もって感謝します。

4

1 に答える 1

2

同じではありませんが、似たようなケースでappendImageが機能するようになりました。

うまくいけば、それはあなたにも役立つでしょう、私に知らせてください

コードから適応して、Blob行を追加/変更するだけで、インライン画像が繰り返されないようにします

  if (el_child.getType() == DocumentApp.ElementType.INLINE_IMAGE)
  {
    var blob = el_child.asInlineImage().getBlob();
    doc.appendImage(blob);
  } 

編集1:以下にコメントするように、bodySectionをループすると、INLINE_IMAGEがPARAGRAPHに埋め込まれます。以下のコードは、テキストでラップされていないすべてのINLINE_IMAGEで機能します。その場合は、さらに深く掘り下げる必要があります。

for (var elem = 0; elem < bodySection.getNumChildren(); elem++) {
          var theElem = bodySection.getChild(elem).copy();
          if (theElem.getType() == DocumentApp.ElementType.PARAGRAPH) {
            if (theElem.asParagraph().getNumChildren() != 0 && theElem.asParagraph().getChild(0).getType() == DocumentApp.ElementType.INLINE_IMAGE) {
              var blob = theElem.asParagraph().getChild(0).asInlineImage().getBlob();
              targetDoc.appendImage(blob);
            }
            else targetDoc.appendParagraph(theElem.asParagraph());
          }
          if (theElem.getType() == DocumentApp.ElementType.LIST_ITEM) targetDoc.appendListItem(theElem.asListItem().copy());
          if (theElem.getType() == DocumentApp.ElementType.TABLE) targetDoc.appendTable(theElem.asTable());
        }
于 2013-01-10T15:49:11.100 に答える