Excel から InterSystems 製品にアクセスする方法
これは InterSystems FAQ サイトの記事です。
Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。
REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。
マクロサンプルは Solution/activityreport.xlsm をご覧ください。
サンプルは、コンテナを利用しています。READMEに記載の方法でコンテナを開始し、Solution/activityreport.xlsm の「データ取得」ボタンをクリックすると以下の結果が得られます。
マクロの中では、以下のGET要求を実行しています。
以下の図例は、RESTクライアントでGET要求を行った結果です( Basic 認証でアクセスしています)。
上記GET要求により、ベースURL(/pm)の指定で、RESTディスパッチクラス(PM.Broker)が起動し、要求されたパス(例では /getactivities)から、PM.REST クラスの GetActivities() メソッドを実行しています。
Class PM.Broker Extends %CSP.REST
{
Parameter CONVERTINPUTSTREAM = 1;
XData UrlMap
{
<Routes>
<Route Url="/getactivities" Method="GET" Call="PM.REST:GetActivities"/>
<Route Url="/getuserandtotal" Method="GET" Call="PM.REST:GetNameAndTotal"/>
<Route Url="/member/:id" Method="GET" Call="PM.REST:GetMember"/>
<Route Url="/getprojects" Method="GET" Call="PM.REST:GetProjects"/>
<Route Url="/getphases" Method="GET" Call="PM.REST:GetPhases"/>
<Route Url="/getyearweeks/:weeks" Method="GET" Call="PM.REST:GetYearWeeks"/>
<Route Url="/createactivityrecord" Method="POST" Call="PM.REST:CreateActivityRecord"/>
</Routes>
}
}
ベースURL(/pm)の設定は、管理ポータル > システム管理 > セキュリティ > アプリケーション > ウェブ・アプリケーション > /pm の定義をご参照ください。
GetActivities() メソッドでは、
SELECT MEMBER->NAME AS NAME,SUM(HOURS) AS TOTALHOURS FROM PM.ACTIVITY WHERE MEMBER->USERNAME = '_system' GROUP BY MEMBER->NAME
と
SELECT YEAR,WEEK,MEMBER->NAME AS NAME,PROJECT->NAME AS PROJECTNAME, PHASE->NAME AS PHASENAME,HOURS FROM PM.ACTIVITY WHERE MEMBER->USERNAME = '_system' order by year,week
を実行し、JSONにまとめて返送しています。
メモ:RESTの他に、ODBC経由でアクセスすることもできます。
ご参考: