コンテンツにスキップ
「プリザンター入門」発売中!

APIで表示名を取得したい

回答

「View」のApiDataTypeプロパティを"KeyValues"と指定してください。


概要

APIで子テーブルの情報を取得する際、通常レスポンスの中のリンクしている項目の値はレコードID(親テーブルの対象レコード)ですが、「View」のApiDataTypeプロパティを"KeyValues"と指定することで表示名(親テーブルの対象レコードのタイトル)でレスポンスを返却するようになります。

サンプルデータ

このFAQでは下記の親子関係のテーブル、レコード情報をもとに記述しております。

顧客マスタ(親テーブル)
レコードID 顧客名 担当者 住所 連絡先
696 働き方改革推進団体 Brown Emily 東京都立川市 258-258-258
697 株式会社オープンソーステクノロジー 鈴木 洋一 東京都豊島区 555-555-555
698 生産性向上委員会 田中 恵子 東京都大田区 999-999-999
699 Webデータベース開発株式会社 渡邉 博 東京都練馬区 789-789-789
700 情報共有イノベーション研究所 山本 陽子 東京都新宿区 333-333-333
701 有限会社ノンプログラミング 中村 隆 東京都国分寺市 456-456-456
702 マネジメント快適化ホールディングス 加藤 誠 東京都中野区 123-123-123
703 株式会社プリザンター 斎藤 美樹 東京都中央区 111-111-111
商談(子テーブル)



顧客(ClassA)の選択肢一覧に顧客マスタとのリンクが設定されています。

レコードID 件名 受注予定日 状況 管理者 担当者 顧客 商品区分 確度 売上 仕入合計 粗利 粗利率
704 AI技術の検証 45219 引き合い 佐々木 春香 佐々木 春香 マネジメント快適化ホールディングス コンサルティング 0.9 1500000 1100000 400000 26.7
705 グループウェアのクラウド環境への移行 45226 提案 Brown Emily Brown Emily 株式会社プリザンター システム開発 0.9 4200000 0 4200000 100
706 食品工場内の環境モニタリングシステムの開発 45212 交渉 鈴木 洋一 鈴木 洋一 株式会社オープンソーステクノロジー システム開発 0.5 4500000 3207000 1293000 28.7
707 グラフ化ツールの販売 45212 引き合い 田中 恵子 田中 恵子 有限会社ノンプログラミング ソフトウェア販売 0.5 320000 280000 40000 12.5
708 業務改善コンサルティング 45221 提案 渡邉 博 渡邉 博 働き方改革推進団体 コンサルティング 0.3 1350000 638000 712000 52.7
709 営業支援ツールの追加機能開発 45228 交渉 山本 陽子 山本 陽子 情報共有イノベーション研究所 システム開発 0.9 540000 440000 100000 18.5
710 文書管理ソフトウェアの販売 45233 契約 中村 隆 小林 佳子 Webデータベース開発株式会社 ソフトウェア販売 0.5 688000 549000 139000 20.2

①通常のレスポンスの場合

サンプルコード (Python)



このサンプルでは商談(子テーブル)にある、商品区分(ClassB)に システム開発 が設定されているレコード情報を取得します。

import requests
import json

# サイトIDを指定
site_id = 620

# APIキーを指定
api_key = "de06bdbced9d395f1cf3f7afb8b084f95718e2cfb7f0759efd13210e386b4b954dbf70cbfe6f56e32492c098816a45e37616f1ec2da0ea71d2f10527795225a2"

# APIのURLを指定
url = f"http://localhost/api/items/{site_id}/get"

# 送信するデータを指定
data = {
    "ApiVersion": 1.1,
    "ApiKey": api_key,
    "View": {
        "ColumnFilterHash": {
            "ClassB": "[\"システム開発\"]"
        }
    }
}

# POSTリクエストを送信
response = requests.post(url, json=data)

# レスポンスを処理
if response.status_code == 200:
    response_data = json.loads(response.content)
    print(json.dumps(response_data, indent=4, ensure_ascii=False))
else:
    print(f"ErrorCode: {response.status_code}")
    print(response.text)
レスポンス

レスポンスの顧客(ClassA)の値は顧客マスタ(親テーブル)の各レコードのIDで返却されています。

{
    "StatusCode": 200,
    "Response": {
        "Offset": 0,
        "PageSize": 200,
        "TotalCount": 3,
        "Data": [
            {
                "SiteId": 620,
                "UpdatedTime": "2023-09-27T10:41:00",
                "IssueId": 709,
                "Ver": 1,
                "Title": "営業支援ツールの追加機能開発",
                "Body": "5年前よりスクラッチで開発していた人事システムに、残業管理機能の追加を行います。\r\n本システム の開発当初から担当しているR社に発注し開発を行います。",
                "StartTime": "2023-10-05T00:00:00",
                "CompletionTime": "2023-10-29T00:00:00",
                "WorkValue": 0.0,
                "ProgressRate": 0.0,
                "RemainingWorkValue": 0.0,
                "Status": 200,
                "Manager": 13,
                "Owner": 13,
                "Locked": false,
                "Comments": "[]",
                "Creator": 13,
                "Updator": 13,
                "CreatedTime": "2023-09-27T10:41:00",
                "ItemTitle": "営業支援ツールの追加機能開発",
                "ApiVersion": 1.1,
                "ClassHash": {
                    "ClassA": "700",
                    "ClassB": "システム開発",
                    "ClassC": "90%"
                },
                "NumHash": {
                    "NumA": 540000.0,
                    "NumB": 440000.0,
                    "NumC": 100000.0,
                    "NumD": 18.5
                },
                "DateHash": {},
                "DescriptionHash": {},
                "CheckHash": {},
                "AttachmentsHash": {
                    "AttachmentsA": []
                }
            },
            {
                "SiteId": 620,
                "UpdatedTime": "2023-09-26T16:56:00",
                "IssueId": 705,
                "Ver": 1,
                "Title": "グループウェアのクラウド環境への移行",
                "Body": "ハードウェアの老朽化に伴いグループウェアをクラウド環境に移行します。\r\n新バージョンのデータへ のコンバートが必要となるためI社の技術コンサルを使います。\r\n\r\n",
                "StartTime": "2023-09-29T00:00:00",
                "CompletionTime": "2023-10-27T00:00:00",
                "WorkValue": 0.0,
                "ProgressRate": 0.0,
                "RemainingWorkValue": 0.0,
                "Status": 150,
                "Manager": 9,
                "Owner": 9,
                "Locked": false,
                "Comments": "[]",
                "Creator": 9,
                "Updator": 9,
                "CreatedTime": "2023-09-26T16:56:00",
                "ItemTitle": "グループウェアのクラウド環境への移行",
                "ApiVersion": 1.1,
                "ClassHash": {
                    "ClassA": "703",
                    "ClassB": "システム開発",
                    "ClassC": "90%"
                },
                "NumHash": {
                    "NumA": 4200000.0,
                    "NumB": 0.0,
                    "NumC": 4200000.0,
                    "NumD": 100.0
                },
                "DateHash": {},
                "DescriptionHash": {},
                "CheckHash": {},
                "AttachmentsHash": {
                    "AttachmentsA": []
                }
            },
            {
                "SiteId": 620,
                "UpdatedTime": "2023-09-26T09:22:00",
                "IssueId": 706,
                "Ver": 1,
                "Title": "食品工場内の環境モニタリングシステムの開発",
                "Body": "関東6拠点の食品工場に温度、湿度を計測するセンサーを配置し状態の変化をモニタリングするシステムを開発したいとの依頼がありました。\r\nセンサーはarduinoで実装し、構内のWiFi経由でデータセンターに接続する方式を提案します 。\r\nモニタリングや分析のためのシステムはD社パッケージをカスタマイズして導入する方式を提案します。\r\n",
                "StartTime": "2023-10-02T00:00:00",
                "CompletionTime": "2023-10-13T00:00:00",
                "WorkValue": 0.0,
                "ProgressRate": 0.0,
                "RemainingWorkValue": 0.0,
                "Status": 200,
                "Manager": 10,
                "Owner": 10,
                "Locked": false,
                "Comments": "[]",
                "Creator": 10,
                "Updator": 10,
                "CreatedTime": "2023-09-26T09:22:00",
                "ItemTitle": "食品工場内の環境モニタリングシステムの開発",
                "ApiVersion": 1.1,
                "ClassHash": {
                    "ClassA": "697",
                    "ClassB": "システム開発",
                    "ClassC": "50%"
                },
                "NumHash": {
                    "NumA": 4500000.0,
                    "NumB": 3207000.0,
                    "NumC": 1293000.0,
                    "NumD": 28.7
                },
                "DateHash": {},
                "DescriptionHash": {},
                "CheckHash": {},
                "AttachmentsHash": {
                    "AttachmentsA": []
                }
            }
        ]
    }
}

②レスポンスの形式を表示名に変更した場合

送信するデータのViewの中で ApiDataType プロパティを指定することでレスポンスの形式を表示名で返却するように変更できます。ApiDataType プロパティの詳細については以下マニュアルを参照してください。
開発者ガイド:JSONデータレイアウト:View

サンプルコード (Python)



Viewの中にApiDataType プロパティと関連するApiColumnKeyDisplayType、ApiColumnValueDisplayTypeプロパティを追加して、レスポンスの各項目のKeyをカラム名(ColumnName)、Valueを表示名(DisplayValue)として返却するようにしております。

import requests
import json

# サイトIDを指定
site_id = 620

# APIキーを指定
api_key = "xxxxx..."

# APIのURLを指定
url = f"http://localhost/api/items/{site_id}/get"

# 送信するデータを指定
data = {
    "ApiVersion": 1.1,
    "ApiKey": api_key,
    "View": {
        "ApiDataType": "KeyValues",
        "ColumnFilterHash": {
            "ClassB": "[\"システム開発\"]"
        },
        "ApiColumnKeyDisplayType": "ColumnName",
        "ApiColumnValueDisplayType": "DisplayValue"
    }
}

# POSTリクエストを送信
response = requests.post(url, json=data)

# レスポンスを処理
if response.status_code == 200:
    response_data = json.loads(response.content)
    print(json.dumps(response_data, indent=4, ensure_ascii=False))
else:
    print(f"ErrorCode: {response.status_code}")
    print(response.text)
レスポンス



上記のレスポンスとは異なり、顧客(ClassA)がレコードIDではなく、表示名で返却されています。

{
    "StatusCode": 200,
    "Response": {
        "Offset": 0,
        "PageSize": 200,
        "TotalCount": 3,
        "Data": [
            {
                "IssueId": 709,
                "ClassA": "情報共有イノベーション研究所",
                "TitleBody": "営業支援ツールの追加機能開発\n5年前よりスクラッチで開発していた人事システムに、残業管理機能の追加を行います。\r\n本システムの開発当初から担当しているR社に発注し開発を行います。",
                "Comments": null,
                "ClassB": "システム開発",
                "CompletionTime": "2023-10-29T00:00:00",
                "Status": "交渉",
                "ClassC": "90%",
                "NumA": 540000.0,
                "NumB": 440000.0,
                "NumC": 100000.0,
                "NumD": 18.5,
                "Manager": "山本 陽子",
                "Owner": "山本 陽子",
                "Updator": "山本 陽子",
                "UpdatedTime": "2023-09-27T10:41:00",
                "Title": "営業支援ツールの追加機能開発"
            },
            {
                "IssueId": 705,
                "ClassA": "株式会社プリザンター",
                "TitleBody": "グループウェアのクラウド環境への移行\nハードウェアの老朽化に伴いグループウェアをクラウド環境に移行します。\r\n新バージョンのデータへのコンバートが必要となるためI社の技術コンサルを使います。\r\n\r\n",
                "Comments": null,
                "ClassB": "システム開発",
                "CompletionTime": "2023-10-27T00:00:00",
                "Status": "提案",
                "ClassC": "90%",
                "NumA": 4200000.0,
                "NumB": 0.0,
                "NumC": 4200000.0,
                "NumD": 100.0,
                "Manager": "Brown Emily",
                "Owner": "Brown Emily",
                "Updator": "Brown Emily",
                "UpdatedTime": "2023-09-26T16:56:00",
                "Title": "グループウェアのクラウド環境への移行"
            },
            {
                "IssueId": 706,
                "ClassA": "株式会社オープンソーステクノロジー",
                "TitleBody": "食品工場内の環境モニタリングシステムの開発\n関東6拠点の食品工場に温度、湿度を計測するセン サーを配置し状態の変化をモニタリングするシステムを開発したいとの依頼がありました。\r\nセンサーはarduinoで実装し、構内のWiFi経由でデータセンターに接続する方式を提案します。\r\nモニタリングや分析のためのシステムはD社パッケージをカスタマイズして導入する方式を提案します。\r\n",
                "Comments": null,
                "ClassB": "システム開発",
                "CompletionTime": "2023-10-13T00:00:00",
                "Status": "交渉",
                "ClassC": "50%",
                "NumA": 4500000.0,
                "NumB": 3207000.0,
                "NumC": 1293000.0,
                "NumD": 28.7,
                "Manager": "鈴木 洋一",
                "Owner": "鈴木 洋一",
                "Updator": "鈴木 洋一",
                "UpdatedTime": "2023-09-26T09:22:00",
                "Title": "食品工場内の環境モニタリングシステムの開発"
            }
        ]
    }
}

関連情報