記事
· 2021年9月21日 3m read

Excel から InterSystems 製品にアクセスする方法

これは InterSystems FAQ サイトの記事です。

Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。

REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。

VBAマクロサンプル

マクロサンプルは 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経由でアクセスすることもできます。

 

ご参考:

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください