プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

Pleasanter の API 呼び出しを Python からやってみた

『入門プリザンター』の『9.5 API』にあるAPIの呼び出しサンプルは、 PowerShell で書かれています。 個人的に PowerShell は使い慣れていないので、ここは、 Python で試してみました

  • Pleasanter 1.4.13.0
  • Python 3.13.1

レコードの取得

『9.5.2 外部システムからデータを取得する』のサンプルの場合、『複数レコード取得』API を使っています。

開発者向け機能:API:テーブル操作:複数レコード取得 | Pleasanter

(似たようなのに、『単一レコード取得』 API もありますが、こちらではないのでご注意ください。)

で、このサンプルだと、説明がないのでわかりにくいのですが、『複数レコード取得』 API 利用時にフィルタ条件を指定して 1 件のレコードを取得しています。 フィルタ条件の指定方法は、こちらの

開発者向け機能:JSONデータレイアウト:View | Pleasanter

を見ると載っています。

ということで、サンプルと同じ動作をするようなコードを書くとこんな感じになります。

records_get_w_filter.py

import requests

"""
『入門プリザンター』『9.5.2 外部システムからデータを取得する』の Python 版

呼び出しているAPI は下記のものが該当
https://pleasanter.org/ja/manual/api-record-get-multi
"""
PLEASANTER_API_KEY = "APIキー"

HOST_URL = "http://ホスト名:50001"
URL_PATH = "/api/items/"
PATH_PIECE = "/get"

# テーブルのサイトID
site_id = "サイトID"

target_url = HOST_URL + URL_PATH + site_id + PATH_PIECE
#print(target_url)

# 取得時のフィルタ指定は
# https://pleasanter.org/ja/manual/api-view
# を参照
data = {
    "ApiVersion": 1.1,
    "ApiKey": PLEASANTER_API_KEY,
    "View": {
        "ColumnFilterHash": {"Title": "株式会社プリザンター"},
        "ColumFilterSearchTypes": {"Title": "ExactMatch"},
    },
}
headers = {"Content-Type": "application/json"}

response = requests.post(target_url, json=data, headers=headers)

#print(response.status_code)
if response.status_code == 200:
    print(response.json()["Response"]["Data"])
else:
    print(response.text)

実行結果はこんな感じです。

.venvmor@DESKTOP-DE7IL4F:~/tmp/pleasanter/api$ python records_get_w_filter.py 
[{'SiteId': 94, 'UpdatedTime': '2025-03-12T09:02:26', 'ResultId': 100, 'Ver': 1, 'Title': '株式会社プリザンター', 'Body': '', 'Status': 0, 'Manager': 0, 'Owner': 5, 'Locked': False, 'Comments': '[]', 'Creator': 2, 'Updator': 2, 'CreatedTime': '2025-03-12T09:02:26', 'ItemTitle': '株式会社プリザンター', 'ApiVersion': 1.1, 'ClassHash': {'ClassA': '東京都中央区', 'ClassB': '111-111-111'}, 'NumHash': {}, 'DateHash': {}, 'DescriptionHash': {}, 'CheckHash': {}, 'AttachmentsHash': {'AttachmentsA': []}}]
.venvmor@DESKTOP-DE7IL4F:~/tmp/pleasanter/api$ 

問題なく取れてますね。

レコードの書き込み

『9.5.3 外部システムからデータを書き込む』のサンプルの場合、『レコード作成』API を使っています。

開発者向け機能:API:テーブル操作:レコード作成 | Pleasanter

Python だとこんな感じになります。

record_write.py

import requests

"""
『入門プリザンター』『9.5.3 外部システムからデータを書き込む』の Python 版

呼び出しているAPI は下記のものが該当
https://pleasanter.org/ja/manual/api-record-create
"""
PLEASANTER_API_KEY = "APIキー"

HOST_URL = "http://ホスト名:50001"
URL_PATH = "/api/items/"
PATH_PIECE = "/create"

# テーブルのサイトID
site_id = "サイトID"

target_url = HOST_URL + URL_PATH + site_id + PATH_PIECE
# print(target_url)

data = {
    "ApiVersion": 1.1,
    "ApiKey": PLEASANTER_API_KEY,
    "Title": "テストレコード1",
    "Body": "Pythonからの書き込みテスト",
}
headers = {"Content-Type": "application/json"}

response = requests.post(target_url, json=data, headers=headers)

# print(response.status_code)
if response.status_code == 200:
    print(response.json())
else:
    print(response.text)

実行結果は

.venvmor@DESKTOP-DE7IL4F:~/tmp/pleasanter/api$ python record_write.py 
{'Id': 114, 'StatusCode': 200, 'Message': '" テストレコード1 " を作成しました。'}
.venvmor@DESKTOP-DE7IL4F:~/tmp/pleasanter/api$ 

こちらも問題ないですね。