レコードの取得(1件)

にメンテナンス済み

kintone は豊富な API を提供しており、これを活用することでアプリケーションのデータをプログラムから直接操作することが可能です。

特に、REST API は HTTP リクエストを通じて kintone のデータを操作するための強力なツールです。

このページでは、kintone の REST API を使用して、特定のレコードを 1 件取得する方法について詳しく解説します。

レコードを 複数件取得する場合は、エンドポイントが異なります。詳細は以下のページを参照してください。

レコードの取得(複数件)
kintone REST APIを使用して、レコードを複数件取得する方法を紹介します。レコードIDを指定して、レコード情報を取得することができます。

kintone から利用する場合

kintone の JavaScript カスタマイズとして REST API を実行する場合、用意されている JavaScript API を使用することで、簡単に REST API を実行することができます。

JavaScript API のkintone.api.urlメソッドを使用することで、実行されるスペースを意識することなく、REST API のエンドポイントを取得することができます。

汎用的な関数の定義
/**
 * kintone REST APIを使用して、IDに一致するレコードを取得する
 *
 * @param { Object } params
 * @param { string | number } params.app - アプリID
 * @param { string | number } params.id - レコードID
 * @return { Promise<{ record: Record<string, any>}> } - レコード情報
 */
const getRecord = (params) => {
  const { app, id } = params;
  return kintone.api(kintone.api.url('/k/v1/record.json', true), 'GET', { app, id });
};

レコードを 複数件取得する場合は、records.jsonを指定しますが、1 件だけ取得する場合は、record.jsonを指定する点に注意してください。

引数には、取得先のアプリ ID と、取得したいレコードの ID を指定します。

対象レコードが存在する場合は、recordプロパティを持つオブジェクトが返されます。

現在表示しているレコードの情報を取得する
(() => {
  const getRecord = (params) => {
    /** 省略 */
  };

  kintone.events.on(['app.record.detail.show'], async (event) => {
    const recordId = kintone.app.record.getId();
    const appId = kintone.app.getId();
    const { record } = await getRecord({ app: appId, id: recordId });
    console.log(record); // { フィールドコード: 値, ... }
    return event;
  });
})();
ダイアログに入力されたレコードIDの情報を取得する
(() => {
  const getRecord = (params) => {
    /** 省略 */
  };

  kintone.events.on(['app.record.index.show'], async (event) => {
    const recordId = prompt('取得したいレコードのIDを入力してください');
    const appId = kintone.app.getId();
    const { record } = await getRecord({ app: appId, id: recordId });
    console.log(record); // { フィールドコード: 値, ... }
    return event;
  });
})();
JavaScript APIとの使い分け

レコードの詳細画面や編集画面では、kintone.app.record.getメソッドを使用することで、簡単にレコード情報を取得することができます。

現在表示されているレコードの、現在の状態を取得するだけで良い場合は、kintone.app.record.getメソッドを使用することをおすすめします。

現在表示しているレコードの情報を取得するだけでなく、他のレコードの情報を取得する場合は、REST API を使用することで、より柔軟にデータを取得することができます。

kintone 以外から利用する場合

kintone の REST API は、Excel や GAS、Node.js など、様々な環境から利用することができます。

REST API を使用することで、kintone 以外の環境から kintone のデータを使用して、アプリケーションを動作させることが可能です。

APIトークンを使用しましょう

kintone 以外の環境から kintone のデータを取得する場合、認証情報をリクエストに含める必要があります。

認証情報にはいくつかの種類がありますが、API トークンを選択することで、セキュリティを確保しつつ、簡単に認証情報を取得することができます。

最も簡単に使用できるのは ID とパスワードを使用した方法ですが、セキュリティ上のリスクがあるため、必要最小限の権限を付与した API トークンを使用することをおすすめします。

Node.js を使用した場合

Node.js から kintone の REST API を使用する場合、ブラウザで JavaScript を実行するのとほとんど同じコードで、HTTP リクエストを送信することができます。

/**
 * kintone REST APIを使用して、IDに一致するレコードを取得する
 * @param { Object } params
 * @param { string | number } params.app - アプリID
 * @param { string | number } params.id - レコードID
 * @return { Promise<{ record: Record<string, any>}> } - レコード情報
 */
const getRecord = (params) => {
  const { app, id } = params;
  return fetch(`https://__your_subdomain__.cybozu.com/k/v1/record.json?app=${app}&id=${id}`, {
    method: 'GET',
    headers: {
      'X-Cybozu-API-Token': 'YOUR_API_TOKEN',
    },
  }).then((res) => res.json());
};

__your_subdomain__の部分と、YOUR_API_TOKENの部分を、それぞれご自身の環境に合わせて変更してください。

引数として設定しても良いですが、関数内で直接設定しても問題ありません。

前述した kintone から利用するコードと異なり、参照先のアプリがゲストスペースである場合は、URL を変更する必要があります。

GAS を使用した場合

Google Apps Script (GAS) から kintone の REST API を使用する場合、UrlFetchAppクラスを使用することで、HTTP リクエストを送信することができます。

GASを使用した場合のサンプルコード
/**
 * kintone REST APIを使用して、IDに一致するレコードを取得する
 * @param { Object } params
 * @param { string | number } params.app - アプリID
 * @param { string | number } params.id - レコードID
 * @return { { record: Record<string, any> } } - レコード情報
 */
const getRecord = (params) => {
  const { app, id } = params;
  const url = `https://__your_subdomain__.cybozu.com/k/v1/record.json?app=${app}&id=${id}`;
  const options = {
    method: 'GET',
    headers: {
      'X-Cybozu-API-Token': 'YOUR_API_TOKEN',
    },
  };
  const response = UrlFetchApp.fetch(url, options);
  return JSON.parse(response.getContentText());
};

python を使用した場合

python から kintone の REST API を使用する場合、requests ライブラリを使用することで、HTTP リクエストを送信することができます。

import requests

def get_record(app: str, record_id: str) -> dict:
    url = f'https://__your_subdomain__.cybozu.com/k/v1/record.json?app={app}&id={record_id}'
    headers = {
        'X-Cybozu-API-Token': 'YOUR_API_TOKEN',
    }
    response = requests.get(url, headers=headers)
    return response.json()

コマンドラインを使用した場合

コマンドラインから kintone の REST API を使用する場合、curlコマンドを使用することで、HTTP リクエストを送信することができます。

curl -X GET 'https://__your_subdomain__.cybozu.com/k/v1/record.json?app=__app_id__&id=__record_id__' \
  -H 'X-Cybozu-API-Token: __your_api_token__'
#kintone #JavaScript #TypeScript