Pleasanter.net のデータをSharperlightで取得する

# はじめに
インプリムから提供されているPleasanterクラウド版（以下Pleasanter.net）は、オンプレミス版のように独自でサーバを構築する必要が無く、簡単にWEBアプリケーションを作成できます。その反面入力したデータでレポートを作成した場合に一度CSVを取得しExcel等で再加工する必要が有ります。
BIフレームワークであるSharperlightはWebAPIを使用して外部システムからデータを簡単に取得する事ができます。
今回はSharperlightのデータ取得するツールであるクエリビルダを使用してPleasanter.netからデータを取得してみます。
### Pleasanter.netのデモデータ（商談管理の例／顧客マスタ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/6cbc33fa-7ffe-a126-e0e2-875b50b72989.png)
### Sharperlightのクエリビルダでデータを取得した画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/2e0589ea-6eda-b108-42a5-97c2d45a058d.png)

# Pleasanter.netの準備
今回はデモ環境を作成し、デモデータを取得します。デモ環境は最大２ケ月間使用可能です。
Pleasanterでデモ環境を使用する場合は下記から申請します。
https://pleasanter.net/
現在Pleasanet.netを使用している方は、WebAPIを使用する関係でスタンダード版以上の契約が必要です。
デモ環境を申請すると登録したメールアドレスにログインIDとパスワードが通知されます。

## APIキーを作成する
ユーザー名のドロップダウンメニューからAPI設定を選択するとAPI設定画面になります。
<img width="300" alt="API設定" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/8e489729-ad47-68cc-91ce-5577b0ae99be.png">
<img width="500" alt="API設定" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/01992d9f-d833-f7bf-b545-cf89646072ae.png">
次画面で作成ボタンを押すとAPIキーが作成されます。
<img width="500" alt="API設定" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/a6e4fbea-62e9-0d86-6a6e-adcbd52bfd8e.png">
APIキーは後で使用するのでメモ帳などに記録してください。

## サイトIDを確認する
顧客マスタのサイトIDを確認します。
トップ＞商談管理の例＞顧客マスタ＞と選択します。データ一覧の画面で上部URLにある/items/と/indexの間の数字がサイトIDになります。
後で使用するの記録しておいてください。
<img width="600" alt="サイトIDの確認" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/14ea6797-7012-a683-f24e-66e86adc4aff.png">

# Sharperlightでデータを取得する。

## クエリビルダを起動する。
アプリケーションメニューからクエリビルダを起動します。
<img width="500" alt="アプリケーションメニュー" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/277eeed7-9a13-3304-0e41-244873c181c0.png">
初期画面は下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/c8b96d49-24b0-48e5-ea2d-73740e671d8f.png)

## 設定する箇所の内容
|説明|値|
|:---|:---|
|モード|概要レポート|
|製品|システム|
|テーブル|Webページのテーブル、CSV、JSON、XMLまたはOData|
|ID|前述のサイトID|
|ApiKey|前述のAPIキー|
|URLリンク|https://demo.pleasanter.org/api/items/{@ID}/get|
|開始位置|Response&yen;Data|
|コンテンツタイプ|application/json|
|POSTの内容|{"ApiVersion":1.0,"ApiKey":"{@ApiKey}","View":{"ApiDataType":"KeyValues"}}|

上記の内容でID、ApiKey、POSTの内容は追加する項目です。

IDとApiKeyは値を変数として使用する為の項目です下部の値で設定する{@ID}や{@ApiKey}に値をセットします。その為に使用する前（上部）で値をセットする必要が有ります。

POSTの内容はWebAPIのBody部になります。具体的な指定はPleasanterのAPIを参照ください。
開発者向け機能：API：テーブル操作：複数レコード取得
https://pleasanter.org/manual/api-record-get-multi

注意事項としてはApiVersionを1.0にしてください。ApiVersion1.1の場合、取得したデータが階層化され他の設定をする必要が有ります。1.0の場合階層化されないので設定が簡単になります。

最終的に下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/d76d2ee5-9ba0-d09f-68c8-6981187321e7.png)

## 製品とテーブルの設定
製品の値部をダブルクリックすると選択画面になります。システムを選択してください。
<img width="300" alt="製品選択" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/615c46e5-18ae-deff-328e-df5b07e1973b.png">
テーブルの値部をダブルクリックすると選択画面になります。該当する項目を選択してください。
<img width="400" alt="テーブル選択" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/bb65f5b6-02a5-76d5-ae9a-20009c640973.png">

# IDとApiKeyの追加
フィルターパネルの説明部（どこでも良いです）でマウス右ボタンを押すとメニューが表示されます。
その他＞番号を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/87395ff5-3ce7-8282-f1fa-4422649f9681.png)
フィルターの説明をIDとします。
<img width="500" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/fcda32dc-aeb2-0f7c-088c-0d7558935fc8.png">

同様にApiKeyを追加します。
ApiKeyの場合選択する項目がテキストとして、フィルターの説明をApiKeyとしてください。

追加した時点ではフィルターパネルの下部にあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/a2a4e5b1-9431-0bdb-dd6c-ec4bb679dd54.png)
これをドラッグアンドドロップでテーブル下に移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/ddc33c3d-439a-fe82-ac17-68b4fb88674e.png)

# IDとApiKeyの設定と値をセットする。
IDとApiKeyは値を1つしか持たないので、プロパティを変更して値をセットします。
説明のIDをダブルクリックするとフィルターのオプション画面になります。

IDの設定をします。値にサイトIDをセットし、挙動を１つの値のみにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/eef9c917-902f-9fa8-bb3d-2bbced008833.png)

ApiKeyも同様に、値にAPIキーをセットし、挙動を１つの値のみにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/dec180f6-84ff-c79d-51e0-c8e9464dcc23.png)

# POSTの内容を追加する
POSTの内は選択パネルから追加します。
オプションを展開しPOSTの内容をフィルターパネルにドラックアンドドロップします。
<img width="500" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/67a11e23-e3c4-f499-939a-f5d32f9dae17.png">
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/9805b93f-66ef-47c0-1821-8028589d745e.png">
IDやApiKeyと同様にオプション画面を開き、値をセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/b91fe1a9-0842-2515-5873-e8c69818d6b3.png)

# 出力フィールドを選択し実行する
以上の設定で正しくAPIが実行されると選択部に項目が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/b8e41733-4fbd-534d-be4a-20343e5fe783.png)
出力したい項目をダブルクリックまたは出力側にドラッグアンドドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/49dbfee3-aebe-46a5-2532-f99fc59b4f86.png)

IDは数値扱いなので通常カンマ区切りで表示します。IDにはカンマは不要なので表示形式を変更します。
出力パネルのIDでダブルクリックすると出力オプションの変更ができます。
書式設定でカスタマイズにチェックして桁区切り記号を未選択状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/d782b188-6fe4-bfcf-7d7d-7bab6ac094e1.png)

プレビューを行うとデータが出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/3eca0d5b-f5b7-7c76-257a-0bdc647c201a.png)

# クエリの保存
作成したクエリ情報は保存する事ができます。フィルターパネルでマウス右ボタンを押すとメニューがでるので保存を選択します。適当な場所に保存してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63349/904c6048-f6ef-3268-7c2c-b2d06d1dcafa.png)


# うまく出力されない場合
選択部に項目が出力されない場合、開始位置の値を一度削除してください。
選択パネルにステータスコードやメッセージが選択できるようになります。出力パネルに追加してプレビューするとエラー内容など原因を把握できます。

# 最後に
今回はデータ取得する為の設定を行いました。
クエリビルダは出力項目のカスタマイズや、フィルターに検索条件を追加しデータを絞り込む機能などが有ります。
また、パブリッシャによりPDF出力や、ExcelプラグインによりExcelでダイレクトにデータ取得したりすることが可能です。
Pleasanterのレポート作成に活用ください。

# 参考サイト
Pleasanter（ユーザーマニュアル）
https://pleasanter.org/manual
Sharperlight（日本サイト）
https://sharperlight.jp/