![見出し画像](https://assets.st-note.com/production/uploads/images/109552823/rectangle_large_type_2_ce7451ebfec85181114535f9da5d3b06.png?width=1200)
kintoneAppクラス
概要
kintoneアプリについて以下の操作を行います。
・レコードの取得
・レコードの追加
・レコードの更新
・レコードの削除
KintoneAppクラスはコンストラクタがコールされると、内部的にkintoneサーバーにアクセスし、アプリ上に定義されているフィールド情報を取得します。
コンストラクタ
class KintoneApp():
def __init__(self, appid, app_token, user_pass, company_code,
guest_space_id="", extra_app_tokens:list=[]):
引数
appid
アプリのIDを数値で指定します
app_token
アプリのトークンを指定します。
ユーザー認証をする場合は不要です(空文字を指定)
レコードの操作はAdministratorとして実行されます
user_passが空文字の場合は必須です
user_pass
ユーザー認証によりレコードを操作します
userid:pass をbase64でエンコードした文字列を指定します
app_tokenか空文字の場合は必須です
company_code
アプリのサブドメインを指定します
https://hgu4igh.cybozu.com の太字部分(hgu4igh)がサブドメインです
guest_space_id
ゲストスペースのIDです
アプリがゲストスペースにない場合は空文字を指定します
extra_app_tokens
ルックアップ先のアプリのトークンをlistで指定します
レコードの追加および更新時にルックアップフィールドを指定する場合は設定が必要です
ユーザー認証の場合は不要です
レコードの取得
レコードを取得する際には、フィールドをKintoneFieldオブジェクトで指定します。kintoneFieldオブジェクトはKintoneAppオブジェクトのget_field_obj()メソッドでフィールドコードの文字列を指定することで取得できます。
取得したレコードはKintoneRecオブジェクトで返されます。
全レコードを取得する例
from kintonelib.kintone_app import KintoneApp
from kintonelib.kintone_field import KintoneField
# KintoneAppオブジェクトの生成
app_id = 5
app_token = "ghk4afkhot_api_token"
user_pass = ""
subdomain = "4gtjs"
kntn = KintoneApp(app_id, app_token, user_pass, subdomain)
# フィールドオブジェクトを取得する
field_no:KintoneField = kntn.get_field_obj("会員番号")
field_name:KintoneField = kntn.get_field_obj("会員名")
# 全レコードを取得する
records = kntn.get_allrecords([field_no, field_name])
# 取得したレコードを表示する
for rec in records:
no = rec.get(field_no).get_val()
name = rec.get(field_name).get_val()
print(f"{no} {name}")
get_allrecords()メソッドでアプリの全レコードを取得します。引数には取得したいフィールドコードオブジェクトをリストで指定します。
戻り値はKintoneRecオブジェクトのリストで取得されます。
KintoneRecオブジェクトはget()メソッドによりKintoneValueオブジェクトを取得します。KintoneValueオブジェクトはget_val()メソッドにより、str型の値を取得できます。
その他のレコード取得関数はこちらをご参照ください。
レコードの追加
from kintonelib.kintone_app import KintoneApp
from kintonelib.kintone_rec import KintoneRec
from kintonelib.kintone_value import KintoneValue
from kintonelib.kintone_field import KintoneField
kntn = KintoneApp(5, "ghk4afkhot_api_token", "", "subdomain")
field_no:KintoneField = kntn.get_field_obj("会員番号")
field_name:KintoneField = kntn.get_field_obj("会員名")
# 追加するレコード1
rec_01 = KintoneRec()
rec_01.put(field_no, KintoneValue("123"))
rec_01.put(field_name, KintoneValue("山田たかし"))
# 追加するレコード2
rec_02 = KintoneRec()
rec_02.put(field_no, KintoneValue("456"))
rec_02.put(field_name, KintoneValue("鈴木アンナ"))
# レコードを追加
record_ids = kntn.post_records([rec_01, rec_02])
レコードの追加には、レコード数分のKitoneRecオブジェクトを引数にしてpost_records()メソッドを呼びます。戻り値は追加されたレコード番号のリストが返ります。
KitoneRecオブジェクトにはput()メソッドでレコード値を追加します。put()メソッドの引数はケーフィールド(intoneFieldオブジェクト)と値(KintoneValueオブジェクト)を対で指定します。
キーを含むKintoneRecオブジェクトで、アプリ側に同値のキーが存在する場合はエラーになります。
通知やWebhookを飛ばしたい場合はpost_record()を使用して1レコードずつ追加する必要があります。
1レコードずつ追加
from kintonelib.kintone_app import KintoneApp
from kintonelib.kintone_rec import KintoneRec
from kintonelib.kintone_value import KintoneValue
from kintonelib.kintone_field import KintoneField
kntn = KintoneApp(5, "ghk4afkhot_api_token", "", "subdomain")
field_no:KintoneField = kntn.get_field_obj("会員番号")
field_name:KintoneField = kntn.get_field_obj("会員名")
# 追加するレコード1
rec_01 = KintoneRec()
rec_01.put(field_no, KintoneValue("123"))
rec_01.put(field_name, KintoneValue("山田たかし"))
# 追加するレコード2
rec_02 = KintoneRec()
rec_02.put(field_no, KintoneValue("456"))
rec_02.put(field_name, KintoneValue("鈴木アンナ"))
# レコードを1件ずつ追加してWebhookを発火させる
for rec in [rec_01, rec_02]:
kntn.post_record(rec)
上記はpost_record()を使って通知やWebhookを発生させてレコード追加する例です。追加するレコード数分のAPIコール数が消費されますので、大量のレコードを追加する場合はご注意ください。
レコードの更新
from kintonelib.kintone_app import KintoneApp
from kintonelib.kintone_rec import KintoneRec
from kintonelib.kintone_value import KintoneValue
from kintonelib.kintone_field import KintoneField
kntn = KintoneApp(5, "ghk4afkhot_api_token", "", "subdomain")
field_no:KintoneField = kntn.get_field_obj("会員番号")
field_name:KintoneField = kntn.get_field_obj("会員名")
# 更新するレコード1
rec_01 = KintoneRec()
rec_01.put(field_no, KintoneValue("123"))
rec_01.put(field_name, KintoneValue("山田たかし"))
# 更新するレコード2
rec_02 = KintoneRec()
rec_02.put(field_no, KintoneValue("456"))
rec_02.put(field_name, KintoneValue("鈴木アンナ"))
# レコードを更新
updated_ids = kntn.update_records(field_no , [rec_01, rec_02])
レコードの更新はupdate_records()メソッドを使用します。引数には更新キーとなるフィールド(KintoneFieldオブジェクト)と、更新するレコードのKintoneRecオブジェクトのリストを指定します。
KintoneRecオブジェクトにはキーとなるフィールドの値が含まれている必要があります。上記例ではfield_no(会員番号フィールド)がキーとなります。
更新キーとなるフィールドはアプリ側で「重複禁止」が指定されている必要があります。
存在しないキー値が指定されるとエラーになります。
その他の更新メソッドについてはこちらをご確認ください。
レコードの削除
全てのレコードを削除
from kintonelib.kintone_app import KintoneApp
from kintonelib.kintone_field import KintoneField
kntn = KintoneApp(5, "ghk4afkhot_api_token", "", "subdomain")
field_no:KintoneField = kntn.get_field_obj("会員番号")
# レコードを削除
kntn.delete_all_records(field_no)
全てのレコードを削除するにはdelete_all_records()を使用します。引数には任意のフィールドオブジェクト(キーである必要はありません)を指定します。
レコード番号を指定した削除
from kintonelib.kintone_app import KintoneApp
kntn = KintoneApp(5, "ghk4afkhot_api_token", "", "subdomain")
# レコード番号を指定して削除
kntn.delete([1,2,3,4])
delete()メソッドでレコード番号のリストを引数で指定することもできます。
この記事が気に入ったらサポートをしてみませんか?