見出し画像

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

  • 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()メソッドでレコード番号のリストを引数で指定することもできます。


この記事が気に入ったらサポートをしてみませんか?