Office アドイン

Visio JavaScript APIで遊んでみました。

前回の記事でプレビュー版がリリースされた「Visio JavaScript API」を紹介しましたが、このAPIでどんなことができるのか、軽く遊んでみることにしました。

JavaScriptコード

※ コードの動作手順はこちらの記事をご参照ください。

<script src="https://visioonlineapi.azurewebsites.net/visio.js"></script>
<script>
  document.write("<h4>Visio図形埋め込み</h4>");
  document.write("<input id='fileUrl' type='text' />");
  document.write("<input type='button' value='Init' onclick='btnInit_onClick()' />");
  document.write("<input type='button' value='Zoom' onclick='btnZoom_onClick()' />");
  document.write("<input type='button' value='FitToWindow' onclick='btnFtw_onClick()' />");
  document.write("<input type='button' value='EnumShapes' onclick='btnEnumShapes_onClick()' />");
  document.write("<input type='button' value='Hyperlink' onclick='btnHyperlink_onClick()' />");
  document.write("<div id='iframeHost' />");
  
  //初期化
  function btnInit_onClick(){
    var url = document.getElementById('fileUrl').value;
    if(url){
      //埋め込み用URLに変換
      url = url.replace('action=view', 'action=embedview');
      url = url.replace('action=interactivepreview', 'action=embedview');
      //Visio図形埋め込み
      var session = new OfficeExtension.EmbeddedSession(url,
        {
          id: "embed-iframe",
          container: document.getElementById('iframeHost')
        }
      );
      return session.init().then(function(){
        OfficeExtension.ClientRequestContext._overrideSession = session;
      });
    }
  }
  
  //ズーム設定
  function btnZoom_onClick(){
    Visio.run(function(ctx){
      var activePage = ctx.document.getActivePage();
      activePage.view.zoom = 100;
      return ctx.sync();
    }).catch(function(error){
      alert("Error: " + error);
    });
  }
  
  //ページサイズをウィンドウに合わせる
  function btnFtw_onClick(){
    Visio.run(function(ctx){
      var activePage = ctx.document.getActivePage();
      activePage.view.fitToWindow();
      return ctx.sync();
    }).catch(function(error){
      alert("Error: " + error);
    });
  }
  
  //シェイプ名とテキスト列挙
  function btnEnumShapes_onClick(){
    Visio.run(function(ctx){
      var activePage = ctx.document.getActivePage();
      var shapes = activePage.shapes;
      shapes.load();
      return ctx.sync().then(function(){
        for(var i=0; i<shapes.items.length; i++){
          alert("Name:" + shapes.items[i].name + "\nText:" + shapes.items[i].text);
        }
      });
    }).catch(function(error){
      alert("Error: " + error);
    });
  }
  
  //ハイパーリンク情報取得
  function btnHyperlink_onClick(){
    Visio.run(function(ctx){
      var activePage = ctx.document.getActivePage();
      var shape = activePage.shapes.getItem('コピー機');
      var hyperlink = shape.hyperlinks.getItem(0);
      hyperlink.load();
      return ctx.sync().then(function(){
        alert("Address:" + hyperlink.address + "\nSubAddress:" +  hyperlink.subAddress + "\nDescription:" + hyperlink.description);
      });
    }).catch(function(error){
      alert("Error: " + error);
    });
  }
</script>

実行画面

ウィンドウのズームやシェイプの列挙、ハイパーリンク情報の取得をしてみましたが、この程度であれば問題なく行えるようです。

ただし現時点(2017/2)では、シェイプにイベントを設定したり、動的にシェイプを配置したり、といったことはできないようなので、実用的なAPIになるのはまだまだ先のようです。

参考情報

Visio JavaScript APIの開発者情報がないか調べたところ、Visio MVPであるDavid John Parker氏のブログに分かりやすいまとめが載っていました。

APIの概要や立ち位置、テスト手順まで詳しく書かれているので、Visio / Office 365開発者の方にとってはかなり有益な情報だと思います。

Visio in the Cloud?David Parker

そういったわけで、現時点でできることは非常に限られている「Visio JavaScript API」ですが、今後の機能追加によって、どんどん実用的になっていくはずですので、気になる方は今からチェックしておくことをお薦めします。

関連記事

  1. Excel

    RSSの日付を変換するVBAマクロ

    RSSから取得した日付(「Wed, 20 Dec 2017 00:02…

  2. Office関連

    テーブルの罫線色情報を列挙するPowerPointマクロ

    テーブルが多いプレゼンテーションファイルの、各テーブルの線の色の情報を…

  3. Excel

    外部からOutlookのマクロを実行するマクロ

    外部からOutlookのマクロを実行するマクロ今回は外部からO…

  4. アイコン一覧

    Office 2013 アイコン一覧(W)

    ・Office 2013 アイコン一覧 NUM…

  5. Office アドイン

    [Office用アプリ]販売者ダッシュボードが日本語化されました。

    当ブログでも下記ページなどで紹介しているSeller Dashboar…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP