2016-10-17 10 views
0

この質問は、Webアプリケーションへのクロス投稿されました:それはENTERというタイトルであなたはボタンを見ることができます https://docs.google.com/document/d/1TgzOIq0g4DyDefmJIEnqycDITIx_2GNQkpdxMGwtqB8/edit?usp=sharing変更]リンクは

Help me find my Element in a Google Doc so I can act on it in script?ここ

は私のGoogleドキュメントでありますNEW NOTE。

私は、テーブルを見つけ出し、必要に応じてそれらの領域のtxtを置き換えるために、ドキュメントの要素を順調に進んできました。しかし、ここのボタンはURLを変更する必要があり、どのように行うのかわかりません。

このURLはアイデアを示しているようですが、わかりませんので、私はそれを私の答えにすることはできません。 Mail merge: can't append images from template

要素についての多くの例を編集しようとしたので、誰かが実際のコードを表示するのを手伝ってくれるだろうか?setURLを見て、親を探すなど。

私はGoogleシートからスクリプトをGoogle Docsの束の上のwokに呼びます。 (私はそれがURLを交換だ持っている次のドキュメントのURLのを取得するためにスプレッドシートを走ることになる

ここで私は私が得ていると考えているほど近いです。ここ

function getDocElements() { 
    var doc = DocumentApp.openByUrl("https://docs.google.com/document/d/1TgzOIq0g4DyDefmJIEnqycDITIx_2GNQkpdxMGwtqB8/edit?usp=sharing"), 
     body = doc.getBody(), 
     numElements = doc.getNumChildren(), 
     elements = []; 

    for (var i = 0; i < numElements; ++i){ 
     var element = doc.getChild(i), 
      type = element.getType(); 
//   daURL = element.getURL(); 

    // Look for child elements within the paragraph. Inline Drawings are children. 
// if(element.asParagraph().getNumChildren() !=0 && element.asParagraph().getChild(0).getType() == DocumentApp.ElementType.INLINE_DRAWING) { 

    var drawingRange = body.findElement(DocumentApp.ElementType.INLINE_DRAWING); 
      while (drawingRange != null) { 
       var element = drawingRange.getElement(); 
       var drawingElement = element.asInlineDrawing(); 
       //drawingElement.removeFromParent(); 
      drawingElement.setURL("http://www.google.com"); 
       drawingRange = body.findElement(DocumentApp.ElementType.INLINE_DRAWING); 
      } 


    // For whatever reason, drawings don't have their own methods in the InlineDrawing class. This bit copies and adds it to the bottom of the doc. 
    //var drawing = element.asParagraph().copy(); 
    //body.appendParagraph(drawing); 

    } 


    Logger.log(i + " : "+type); 
} 

はその番組私の最新の繰り返しですログに私が変更したいinLineDrawing ...

===========を含む要素は、

function getDocElement() { 
    var doc = DocumentApp.openByUrl("https://docs.google.com/document/d/1TgzOIq0g4DyDefmJIEnqycDITIx_2GNQkpdxMGwtqB8/edit?usp=sharing"), 
     body = doc.getBody(), 
     numElements = doc.getNumChildren(), 
     elements = []; 

    for (var i = 0; i < numElements; ++i){ 
     var element = doc.getChild(i), 
      type = element.getType(); 
//  daURL = element.getURL(); 

    Logger.log(i + " : " + numElements + " : "+ type + " " + element); 


    // Search through the page elements. Paragraphs are top-level, which is why I start with those. 
if(type == DocumentApp.ElementType.PARAGRAPH){ 

    // Look for child elements within the paragraph. Inline Drawings are children. 
    if(element.asParagraph().getNumChildren() !=0 && element.asParagraph().getChild(0).getType() == DocumentApp.ElementType.INLINE_DRAWING) { 

    //element.getParent().setLinkUrl("http://www.google.com"); 
    Logger.log(element.asParagraph().getChild(0).getType() + " : " + element.getAttributes()); 

    // For whatever reason, drawings don't have their own methods in the InlineDrawing class. This bit copies and adds it to the bottom of the doc. 
    var drawing = element.asParagraph().copy(); 
    //body.appendParagraph(drawing); 

// body.appendParagraph(); 
    if(element.getParent() !=''){ 
     //element.asParagraph().appendHorizontalRule(); 
     //element.editAsText().appendText("text"); 
    // element.getParent().insertHorizontalRule(0); 

    } 


    } 
} 


    } 

} 
+0

最終的に、各docのURLボタンをスプレッドシートから取得する新しいURLに変更する必要があります。 –

+0

関連:http://stackoverflow.com/questions/34983060/google-script-inlinedrawing-class –

答えて

2

私はよく分からない理由setLinkUrl()あなたは(あなたがPNGまたはSVGとして図面をダウンロードし、それを挿入することができます)画像を使用して描画を置き換えることができれば、あなたはここでsetLinkUrl

を使用することができるようになりますInlineDrawing

のために利用できないことは例です。

function myFunction() { 

var body = DocumentApp.getActiveDocument().getBody(); 

// All inline images as a RangeElement 
var images = body.findElement(DocumentApp.ElementType.INLINE_IMAGE); 

// select first image, in case your doc has more than one you'll need to loop 
var element = images.getElement(); 
var image = element.asInlineImage(); 
image.setLinkUrl("www.google.com"); 
} 
+0

私は画像のURLを設定する方法を私に示していると思うし、使用する画像で図面を置き換えることを提案するこの。私はそれをどうやってやるのか分からない。また、これはテストです。これらのドキュメントには600以上のフォルダがあり、これを実行する必要があるため、ソリューションを見つけるためのスクリプティングは実質的に必要です。 –

+0

@ocordova、図面を文書のURLのシートリストの画像に置き換える方法を教えてください。これはうまくいくかもしれない唯一の提案です。 –

+0

私は実際には誰も深い専門知識でこれに対応することができることに驚いています。 inlinedrawingsはまれに使用されていますか?この方法でボタンを作成するのは健全なプロセスではありませんが、これはインターネット上で提案されていますか? –

0

残念ながらクラスInlineDrawingは、プログラム InlineImageにそれを変更するには接続されたリンクやその他のにアクセスするためのメソッドを持っていません。手動でリンクを変更する必要があります。

関連機能要求:

  • 問題3367:図面を作成および変更する機能を追加し

参照

:画像

  • 問題1054としてInlineDrawingを輸出許可:Answer Henrique AbreuによるModifying a drawing using Google Apps Script

  • 関連する問題