kintone REST APIで外部からレコードを取得する方法|curlの実例

はじめに

kintone REST APIを利用すると、社外のWebシステムや業務ツール、Pythonプログラムなどから、kintoneのレコードを取得できます。
本記事では、APIトークンの発行から、curlとPythonを使ったレコード取得までを初心者向けに解説します。また、ブラウザから直接アクセスする場合のCORSやAPIトークン漏えいの注意点も紹介します。

kintoneカスタマイズの初歩

通常のカスタマイズせずとも、業務管理アプリ等としての利用は可能ではあるが、さらに、kintoneを使いやすいものにするためにカスタマイズの方法の一例を記載する。

kintoneでAPIトークンを発行する

対象アプリを開き、次の順番で設定します。

  1. kintoneの管理画面にて、対象アプリを開き
  2. アプリの設定(歯車アイコン)をクリック
  3. 設定タブのAPIトークンをクリック
  4. 生成するボタンをクリック
  5. アクセス権は、まずレコード閲覧にチェック

アプリ更新

  1. APIトークン設定を保存
  2. 「アプリを更新」を実行
  3. APIトークンは、アプリごとに発行され、HTTPヘッダーのX-Cybozu-API-Tokenに設定します。

レコード取得APIのURL

通常アプリのURL

複数レコードを取得するURLは次の形式です。

https://サブドメイン.cybozu.com/k/v1/records.json

例えば、サブドメインが「sample」の場合です。

https://sample.cybozu.com/k/v1/records.json

ゲストスペース内アプリのURL

ゲストスペース内のアプリではURLが異なります。

https://sample.cybozu.com/k/guest/ゲストスペースID/v1/records.json

curlでkintoneのレコードを取得する

アプリIDが123の場合

curl -X GET \
  'https://sample.cybozu.com/k/v1/records.json?app=123&totalCount=true' \
  -H 'X-Cybozu-API-Token: YOUR_API_TOKEN'
{
  "records": [
    {
      "$id": {
        "type": "__ID__",
        "value": "1"
      },
      "会社名": {
        "type": "SINGLE_LINE_TEXT",
        "value": "株式会社サンプル"
      }
    }
  ],
  "totalCount": null
}

Pythonでkintoneのレコードを取得する

import os

import requests

KINTONE_DOMAIN = 'https://xxxxx.cybozu.com'
APP_ID = 14
API_TOKEN = 'your_api_token'

url = f'{KINTONE_DOMAIN}/k/v1/records.json'

response = requests.get(
    url,
    params={
        'app': APP_ID,
        'totalCount': 'true',
    },
    headers={
        'X-Cybozu-API-Token': API_TOKEN,
    },
    timeout=30,
)

response.raise_for_status()

data = response.json()

for record in data['records']:
    print(record['会社名']['value'])

外部webアプリからアクセス場合の注意点

ブラウザにAPIトークンを書かない

APIトークンが閲覧できてしまうため、公開WebページのJavaScriptにはAPIトークンを記述しないでください。外部Webアプリから利用するときは、Node.js、PHP、Laravelなどのバックエンドを経由してkintone REST APIを実行します。

よくあるエラーと対処方法

401または認証エラー

  • APIトークンが間違っている
  • HTTPヘッダ名が間違っている
  • APIトークン設定後にアプリを更新していない

権限エラー

  • APIトークンに「レコード閲覧」権限がない
  • アプリやレコードのアクセス権で制限されている

CORSエラー

  • 外部Webページのブラウザからkintoneへ直接アクセスしている
  • バックエンド経由の構成に変更する

まとめ

今回は、kintone REST APIを利用して、外部環境からkintoneのレコードを取得する方法を紹介しました。

kinoneの管理画面内でAPIトークンを発行し、curlやPythonなどからリクエストを送信することで、外部システムからkintoneのデータを取得できます。取得したデータは、社内システムとの連携、帳票作成、データ分析、Webサービスへの表示等、様々な用途に活用できます。

kintone REST APIを活用することで、kintone単体では実現が難しい処理や、既存システムとのデータ連携も可能になります。まずはレコード取得から試し、慣れてきたらレコードの登録・更新・削除などにも取り組んでみてください。