#はじめに#
プリザンターのAPIで頻繁に使う「単一レコード取得」「複数レコード取得」「レコード作成」「レコード更新」をモジュール化したので公開します。(言語はPythonです)
#モジュール#
ModPleasanter.py
import requests
import json
"""
関数:getRecord
引数:baseUrl str - Pleasanter APIのベースURL
recordId str - PleasanterのレコードID
apiKey str - Pleasanter APIのKEY
返値:辞書のリスト
またはHTTPエラーコード
"""
def getRecord(baseUrl, recordId, apiKey):
# URLを作成
url = baseUrl + '/' + recordId + '/get'
# APIにリクエストするデータを作成
payload = {
"ApiKey": apiKey
}
# API(複数レコード取得API)にリクエスト
r_post = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json', 'charset': 'UTF-8'})
# HTTPエラーコードを返す
if r_post.status_code != 200:
return 'HTTP Error: ' + str(r_post.status_code)
# レスポンスを連想配列に変換
result = r_post.json()
data = result['Response']['Data'][0]
#print(data)
# レコード数を返す(エラーの場合はエラーメッセージを返す)
if result['StatusCode'] == 200:
return data
else:
return 'HTTP Error: ' + str(result['StatusCode'])
"""
関数:getRecords
引数:baseUrl str - Pleasanter APIのベースURL
siteId str - PleasanterのサイトID
apiKey str - Pleasanter APIのKEY
filter 辞書 - ColumnFilterHash
返値:dataまたはエラーメッセージ
"""
def getRecords(baseUrl, siteId, apiKey, filter):
offset = 0
pageSize = 200
totalCount = 1
records = []
# URLを作成
url = baseUrl + '/' + siteId + '/get'
while offset < totalCount:
# APIにリクエストするデータを作成
payload = {
"apiKey": apiKey,
"Offset": offset,
"View": {
"ColumnFilterHash": filter
}
}
# API(複数レコード取得API)にリクエスト
r_post = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json', 'charset': 'UTF-8'})
# HTTPエラーコードを返す
if r_post.status_code != 200:
return 'HTTP Error: ' + str(r_post.status_code)
# レスポンスを連想配列に変換
result = r_post.json()
# レコード数を返す(エラーの場合はエラーメッセージを返す)
if result['StatusCode'] == 200:
# レコード数とページサイズを取得
totalCount = result['Response']['TotalCount']
pageSize = result['Response']['PageSize']
# レコードを取得
for data in result['Response']['Data']:
records.append(data)
else:
return 'HTTP Error: ' + str(result['StatusCode'])
# offsetをインクリメントする
offset = offset + pageSize
return records
"""
関数:createRecord
引数:baseUrl str - Pleasanter APIのベースURL
siteId str - PleasanterのサイトID
apiKey str - Pleasanter APIのKEY
payload 辞書 - 作成するレコードに登録するデータ
返値:辞書のリスト
またはHTTPエラーコード
"""
def createRecord(baseUrl, siteId, apiKey, payload):
# URLを作成
url = baseUrl + '/' + siteId + '/create'
# APIにリクエストするデータにAPIキーを追加
payload['ApiKey'] = apiKey
# API(レコード作成API)にリクエスト
r_post = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json', 'charset': 'UTF-8'})
# HTTPエラーコードを返す
if r_post.status_code != 200:
return r_post.status_code
# レスポンスを連想配列に変換
result = r_post.json()
# HTTPレスポンスコードを返す
return result['StatusCode']
"""
関数:updateRecord
引数:baseUrl str - Pleasanter APIのベースURL
recordId str - PleasanterのレコードID
apiKey str - Pleasanter APIのKEY
payload 辞書 - 更新するレコードに登録するデータ
返値:辞書のリスト
またはHTTPエラーコード
"""
def updateRecord(baseUrl, recordId, apiKey, payload):
# URLを作成
url = baseUrl + '/' + recordId + '/update'
# APIにリクエストするデータにAPIキーを追加
payload['ApiKey'] = apiKey
# API(レコード作成API)にリクエスト
r_post = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json', 'charset': 'UTF-8'})
# HTTPエラーコードを返す
if r_post.status_code != 200:
return r_post.status_code
# レスポンスを連想配列に変換
result = r_post.json()
# HTTPレスポンスコードを返す
return result['StatusCode']
#使い方#
モジュールには4つのAPIに対応した関数があります:
- getRecord - 単一レコード取得
- getRecords - 複数レコード取得
- createRecord - レコード作成
- updateRecord - レコード更新
##単一レコード取得##
getRecord.py
import ModPleasanter
baseUrl = 'http://hogehoge.com/pleasanter/api/items/'
apiKey = '012345689abcdef~'
recordId = '012345'
print(ModPleasanter.getRecord(baseUrl, recordId, apiKey))
単一レコード取得APIレスポンスのData部分を返します。
https://pleasanter.org/manual/api-record-get
{"SiteId": 1, "UpdateTime": "2021-07-17T00:00:00", ..., "Title": "タイトル", ...}
##複数レコード取得##
getRecords.py
import ModPleasanter
baseUrl = 'http://hogehoge.com/pleasanter/api/items/'
apiKey = '012345689abcdef~'
siteId = '1'
filter = {
'ClassA': 'あいうえお'
}
print(ModPleasanter.getRecords(baseUrl, siteId, apiKey, filter))
filterはColumnFilterHashの内容になります。
https://pleasanter.org/manual/api-view
複数レコード取得APIレスポンスのData部分を返します。
https://pleasanter.org/manual/api-record-get-multi
##レコード作成##
createRecord.py
import ModPleasanter
baseUrl = 'http://hogehoge.com/pleasanter/api/items/'
apiKey = '012345689abcdef~'
siteId = '1'
payload = {
'Title': 'タイトル',
'ClassHash': {
'ClassA': 'あいうえお'
}
}
ModPleasanter.createRecord(baseUrl, siteId, apiKey, payload)
##レコード更新##
updateRecord.py
import ModPleasanter
baseUrl = 'http://hogehoge.com/pleasanter/api/items/'
apiKey = '012345689abcdef~'
recordId = '012345'
payload = {
'Title': 'タイトル2',
'ClassHash': {
'ClassA': 'あいうえお'
}
}
ModPleasanter.updateRecord(baseUrl, recordId, apiKey, payload)
#まとめ#
特に難しいことはしていませんので、他のAPIにも拡張可能だと思います。