前回の記事でプレビュー版がリリースされた「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 JavaScript API」ですが、今後の機能追加によって、どんどん実用的になっていくはずですので、気になる方は今からチェックしておくことをお薦めします。

















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