単一レコード取得
概要¶
APIにより、指定したIDの「レコード」を取得します。
制限事項¶
・ 複数のレコードを一括で取得する場合は、複数レコード取得APIを使用してください。
事前準備¶
・ APIを使用するためにはAPIキーを作成する必要があります。
・ ログインしているブラウザのセッションからアクセスする場合にはAPIキーを指定せずに使用可能です。
リクエスト¶
下記のリクエスト形式で、JSONデータを送信します。URLは環境によって異なるためAPIのURLを参照の上、適宜変更してください。
| 設定項目 | 値 |
|---|---|
| HTTPメソッド | POST |
| Content-Type | application/json |
| 文字コード | UTF-8 |
| URL | http://{サーバー名}/{パス}/api/{コントローラー名}/{レコードID}/get |
| Body | 以下のjsonデータを参考のこと |
JSON¶
レスポンス¶
下記の形式のJSONデータが返却されます。Response部分のデータのレイアウトはJSONデータレイアウト:Itemを参照してください。
JSON¶
{
"StatusCode": 200,
"Response": {
"Data": [
{
"SiteId": 7,
"UpdatedTime": "2021-06-12T11:26:26",
"IssueId": 340,
"Ver": 2,
"Title": "AI技術の検証",
"Body": "プロジェクトマネジメントにおけるリスクの早期発見を目的としたAI技術の検証を行いたいとの依頼がありました。\r\n今期は進捗管理のデータや電子メールのデータ等を活用し問題が発生しやすいプロジェクトの共通点を発見するための技術検証を行います。\r\nまずはプロジェクトを具体化するための要件定義フェーズを商談化します。",
"StartTime": "1899-12-30T00:00:00",
"CompletionTime": "2021-06-18T00:00:00",
"WorkValue": 0.0,
"ProgressRate": 0.0,
"Status": 100,
"Manager": 17,
"Owner": 17,
"Locked": false,
"Comments": "[]",
"Creator": 17,
"Updator": 2,
"CreatedTime": "2021-05-25T16:56:00",
"ItemTitle": "AI技術の検証",
"ApiVersion": 1.1,
"ClassHash": {
"ClassA": "338",
"ClassB": "コンサルティング",
"ClassC": "90%"
},
"NumHash": {
"NumA": 1500000.0,
"NumB": 1180000.0,
"NumC": 320000.0,
"NumD": 21.3
},
"DateHash": {},
"DescriptionHash": {},
"CheckHash": {},
"AttachmentsHash": {
"AttachmentsA": []
}
}
]
}
}
サンプルコード¶
コード内の【 ... 】 は適宜修正してください。¶
1. レコードIDを指定しCSVを出力
任意のレコードを取得し、CSVファイルを出力します。
Python(api_record_get.py)¶
import requests
import csv
# サーバ名、APIキー、レコードID、CSVファイル名を指定
BASE_URL = "【サーバー名】"
API_KEY = "【APIキー】"
RECORD_ID = 【レコードID】
CSV_PATH = "api_record_get.csv"
# 単一レコード取得APIでレコード情報を1件取得する関数
def get_record(base_url: str, record_id: int, api_key: str) -> dict:
url = f"{base_url}/api/items/{record_id}/get"
payload = {
"ApiVersion": 1.1,
"ApiKey": api_key,
}
headers = {"Content-Type": "application/json"}
res = requests.post(url, json=payload, headers=headers)
res.raise_for_status()
data = res.json()
# レコード本体は Response.Data[0] に入っている
item_list = data.get("Response", {}).get("Data", [])
if not item_list:
raise ValueError("レコードが取得できませんでした。")
return item_list[0]
def write_record_to_csv(record: dict, csv_path: str):
row = {
"会社名": record.get("Title"),
"会社概要": record.get("Body"),
"設立日": record.get("DateHash", {}).get("DateC"),
"業種": record.get("ClassHash", {}).get("ClassF"),
}
fieldnames = list(row.keys())
# UTF-8 (BOM付き)
with open(csv_path, "w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerow(row)
if __name__ == "__main__":
record = get_record(BASE_URL, RECORD_ID, API_KEY)
write_record_to_csv(record, CSV_PATH)
print(f"レコード {RECORD_ID} を {CSV_PATH} に出力しました。")
