Skip to main content

Kintone REST API helper for Python

Project description

skintone

大部分基于 Mr zenkPytone(https://zenk.co.jp/service/kintone/pytone/)代码改写

由于作者没有在 pypi 上面更改为 token 的验证方式,无奈只能自己修改一份;此代码主要是自己使用;所以注释部分就相对来说比较随意

skintone はKintoneにアクセスするための Python ライブラリです。

from skintone import kintone, kintone_file



kintone      = kintone.Kintone('APIトークン', 'サブドメイン', 'アプリID')

kintone_file = kintone_file.KintoneFile('APIトークン', 'サブドメイン')

Features

skintone はKintone REST APIの以下に対応しています

Requirement

skintone は Python3 系で動作し、以下のライブラリに依存します。

Installation

pip install skintone

Usage

  • レコードの取得(複数)
#呼び出し方

kintone.select(where,order,limit,fields)

"""

引数は省略可能です



・レコードのソートをする場合はwhereには書かず、orderに記述してください

・limitを指定する場合はwhereには書かず、limitに数値を記述してください

・fieldsを省略した場合、全フィールドを取得します

・idとrevisionは指定していなくても取得します

・500件より多いレコードを取得することは出来ません

"""



#例

where    = 'フィールドコート1 = "value"'

order    = 'order by $id asc'

limit    = 500

fields   = ['フィールドコート1','フィールドコート2','サブテーブル']

response = kintone.select(where=where,order=order,limit=limit,fields=fields)



"""

レスポンスの例

[

    {

        '$id':1,

        'revision':1,

        'フィールドコート1':'value',

        'フィールドコート2':'value',

        'サブテーブル':

        [

            {

                'id': '1111111',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            },

            {

                'id': '1111112',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            }

        ]

    },

    {

        '$id':2,

        'revision':1,

        'フィールドコート1':'value',

        'フィールドコート2':'value',

        'サブテーブル':

        [

            {

                'id': '2222222',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            },

            {

                'id': '2222223',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            }

        ]

    }

]



"""
  • レコードの取得(一件)
#呼び出し方

#引数に取得するレコードIDを指定します

kintone.selectRec(recordID)



#例

recordID = 1

response = kintone.selectRec(recordID)



"""

レスポンスの例

{

    '$id':1,

    'revision':1,

    'フィールドコート1':'value',

    'フィールドコート2':'value',

    'サブテーブル':

    [

        {

            'id': '1111111',   #テーブルの行ID

            'フィールドコート1':'value',

            'フィールドコート2':'value',

        },

        {

            'id': '1111112',   #テーブルの行ID

            'フィールドコート1':'value',

            'フィールドコート2':'value',

        }

    ],

}



"""
  • レコードの取得(全件)
#呼び出し方

kintone.selectAll(where,fields)

"""

引数は省略可能です



・order byを指定することはできません

・limitを指定することはできません

・fieldsを省略した場合、全フィールドを取得します

・idとrevisionは指定していなくても取得します

・対象のレコードをすべて取得します(offset上限対応)

"""



#例

where    = 'フィールドコート1 = "value"'

fields   = ['フィールドコート1','フィールドコート2','サブテーブル']

response = kintone.select(where=where, fields=fields)



"""

レスポンスの例

[

    {

        '$id':1,

        'revision':1,

        'フィールドコート1':'value',

        'フィールドコート2':'value',

        'サブテーブル':

        [

            {

                'id': '1111111',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            },

            {

                'id': '1111112',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            }

        ]

    },

    {

        '$id':2,

        'revision':1,

        'フィールドコート1':'value',

        'フィールドコート2':'value',

        'サブテーブル':

        [

            {

                'id': '2222222',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            },

            {

                'id': '2222223',   #テーブルの行ID

                'フィールドコート1':'value',

                'フィールドコート2':'value',

            }

        ]

    }

]



"""
  • レコードの登録(一括)
#呼び出し方

#insert関数の引数はリスト型でなくてはいけません

kintone.insert(records)



#例

records = [

    {

        '文字列__1行':'value',

        '文字列__複数行':'value\nvalue2',

        'チェックボックス':

            [

                'sample1',

                'sample2'

            ],

        'ユーザー選択':

            [

                'ログイン名1',

                'ログイン名2'

            ],

        'サブテーブル':

        [

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            },

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            }

        ]

    },

    {

        '文字列__1行':'value',

        '文字列__複数行':'value\nvalue2',

        ............

    }

]



response = kintone.insert(records)



"""

レスポンスの例

{

    'ids':['1','2'],

    'revisions':['1','1']

}

"""
  • レコードの登録(一件)
#呼び出し方

#insertRec関数の引数は辞書型でなくてはいけません

kintone.insertRec(record)



#例

record = {

    '文字列__1行':'value',

    '文字列__複数行':'value\nvalue2',

    'チェックボックス':

        [

            'sample1',

            'sample2'

        ],

    'ユーザー選択':

        [

            'ログイン名1',

            'ログイン名2'

        ],

    'サブテーブル':

        [

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            },

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            }

        ]

}



response = kintone.insertRec(record)

"""

レスポンスの例

{

    'id': '1',

    'revision': '1'

}

"""
  • レコードの更新(一括)
#呼び出し方

#update関数の引数はリスト型でなくてはいけません

kintone.update(records)



"""

登録するレコードにidもしくはupdateKeyを指定する必要があります

"""



#例

records = [

    {

        '$id':'1',

        '文字列__1行':'value',

        '文字列__複数行':'value\nvalue2',

        'チェックボックス':

            [

                'sample1',

                'sample2'

            ],

        'ユーザー選択':

            [

                'ログイン名1',

                'ログイン名2'

            ],

        'サブテーブル':

        [

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            },

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            }

        ]

    },

    {

        'updateKey':

        {

            'field':'重複禁止のフィールドコート',

            'value':'value'

        },

        '文字列__1行':'value',

        '文字列__複数行':'value\nvalue2',

        ............

    }

]



response = kintone.update(records)

"""

レスポンスの例

{

    'records':[

        {

            'id':'1',

            'revision':'2'

        },

        {

            'id':'2',

            'revision':'2'

        }

    ]

}

"""
  • レコードの更新(一件)
#呼び出し方

#updateRec関数の引数は辞書型でなくてはいけません

kintone.updateRec(record)



"""

登録するレコードにidもしくはupdateKeyを指定する必要があります

"""

#例



record = {

    '$id':'1',

    '文字列__1行':'value',

    '文字列__複数行':'value\nvalue2',

    'チェックボックス':

        [

            'sample1',

            'sample2'

        ],

    'ユーザー選択':

        [

            'ログイン名1',

            'ログイン名2'

        ],

    'サブテーブル':

        [

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            },

            {

                '文字列__1行':'value',

                '文字列__複数行':'value\nvalue2',

                'チェックボックス':

                    [

                        'sample1',

                        'sample2'

                    ]

            }

}



response = kintone.updateRec(record)

"""

レスポンスの例

{

    'revision': '2'

}

"""
  • レコードの削除
#呼び出し方

#delete関数の引数はリスト型でなくてはいけません

kintone.delete(recordIDs)



#例



recordIDs = ['1','2','3']



response = kintone.delete(recordIDs)

"""

レスポンスの例

{}

"""

#リクエスト成功時は空の辞書が戻ってきます
  • レコードコメントの投稿
#呼び出し方

kintone.postComment(recordID, text, mentions)



#例



text      = "システムからのコメントです。\nご確認をお願いします。"

mentions  = [

    {

        "code": "takahashi",

        "type": "USER"

    },

    {

        // メンション先のユーザーにゲストユーザーを指定する場合

        "code": "guest/yamada@test.jp",

        "type": "USER"

    },

]



response = kintone.postComment(recordID=1, text=text, mentions=mentions)

"""

レスポンスの例

{

    "id": 1

}

"""

#投稿したコメントのIDが返されます
  • レコードコメントの削除
#呼び出し方

kintone.deleteComment(recordID, commentID)



#例

response = kintone.deleteComment(recordID=1, comment=1)



"""

レスポンスの例

{}

"""

#リクエスト成功時は空の辞書が戻ってきます
  • レコードコメントの一括取得
#呼び出し方

kintone.selectComment(recordID, order, offset, limit)

"""

order,offset,limitは省略可能です

"""



#例

response = kintone.selectComment(recordID=1, order='desc', offset=0, limit=10)



"""

レスポンスの例

{

    "comments": [

        {

            "id": "2",

            "text": "佐藤 昇 \nありがとうございます。内容を確認しました。\n引き続きよろしくお願いします!",

            "createdAt": "2016-04-12T23:49:00Z",

            "creator": {

                "code": "kato",

                "name": "加藤 美咲"

            },

            "mentions": [

                {

                    "code": "sato",

                    "type": "USER"

                }

            ]

        },

        {

            "id": "1",

            "text": "加藤 美咲   営業本部 管理部受付 \n\n本日の作業レポートです。\n高橋 しおり さん、ご確認をお願いします。",

            "createdAt": "2016-04-12T23:46:00Z",

            "creator": {

                "code": "sato",

                "name": "佐藤 昇"

            },

            "mentions": [

                {

                    "code": "kato",

                    "type": "USER"

                },

                {

                    "code": "営業本部_OZKQWZ",

                    "type": "ORGANIZATION"

                },

                {

                    "code": "管理部受付_zX6C6r",

                    "type": "GROUP"

                },

                {

                    "code": "takahashi",

                    "type": "USER"

                }

            ]

        }

    ],

    "older": false,

    "newer": false

}

"""
  • ファイルのアップロード
#呼び出し方

kintone_file.uploadFile(file)



#例

with open('ファイルのパス', mode='rb') as f:

    response = kintone_file.uploadFile(f)



"""

レスポンスの例

{

    "fileKey": "c15b3870-7505-4ab6-9d8d-b9bdbc74f5d6"

}

"""
  • ファイルのダウンロード
#呼び出し方

kintone_file.downloadFile(fileKey)



#例

fileKey  = 'c15b3870-7505-4ab6-9d8d-b9bdbc74f5d6'

response = kintone_file.downloadFile(fileKey=fileKey)



"""

バイナリデータがレスポンスされます

"""

Author

本插件完全借助于 Masashi Tsuruya 的 pytone,

但是 pip 仓库里面的代码没有更新 token 认证方式,所以只能自己弄了一个仓库

License

"skintone" is under MIT license.

更新发布备忘


修改完善 setup.py

进行本地测试 python setup.py develop

编译 python3 setup.py sdist

上传到pypi  twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skintone-0.0.3.tar.gz (13.8 kB view details)

Uploaded Source

File details

Details for the file skintone-0.0.3.tar.gz.

File metadata

  • Download URL: skintone-0.0.3.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for skintone-0.0.3.tar.gz
Algorithm Hash digest
SHA256 07992d88ea0a3260fb4f6602fdd70d414648c5c8137e6b0413b368bb45f3fdf0
MD5 e8f1e4b7e5dc3845b42411900ef589fa
BLAKE2b-256 45871af6cd13c2248f68bdc19af43f8a4b858dbc10923c0543c04a6d277d0cc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page