【kintone】JavaScriptの書き方(GET API)【カスタマイズAPI編】

kintoneで他アプリのレコード情報を取得したいのですが、どのように実装すれば良いのでしょうか。

kintoneにおけるJavaScriptカスタマイズではREST APIが使えます。
GET処理を行うことで他アプリのレコードを取得できます。

この記事ではAPIを使ったレコードの取得(GET)処理について解説します。

この記事で何が分かる?
  • kintoneのJavaScriptカスタマイズでは、REST APIを使えます。
  • レコード情報を取得するには、GET処理を行います。
  • GET処理は2種類あります。
    ・レコードIDを指定して1件取得する
    ・条件を指定して複数件取得する
  • REST APIは非同期処理です。同期処理にするには「async/await」を使います。
目次

kintoneのレコード情報の取得(GET)

kintoneは標準機能で「ルックアップ」や「関連レコード一覧」など、他アプリの情報を取得するフィールドが用意されています。

これに加えて、JavaScriptカスタマイズでは、REST APIのGET処理を使えば、任意のタイミングで他アプリのレコード情報を取得できます。

取得できるレコードも1件だけではなく、条件に一致した複数のレコードを一括取得できます。

1件取得する方法複数件取得する方法の両方をコードで解説します。

レコードを1件取得する

レコードを1件取得する場合は、アプリIDとレコードIDを使います。

以下のコードでは、レコード追加画面表示時にアプリID:129のレコード(ID:3)の情報を取得し、その値を数量フィールドに設定します。

(() => {

	'use strict';

	kintone.events.on(['app.record.create.show'], event => {

		const params = {
			app: 129,		// アプリID
			id: 3				// レコードID
		};

		kintone.api(kintone.api.url('/k/v1/record.json', true), 'GET', params).then((resp) => {
			// GET成功
			console.log(resp);
			const current = kintone.app.record.get();
			current.record.予約.value = resp.record.予約人数.value;
			kintone.app.record.set(current);
		}).catch((error) => {
			// GETエラー
			console.log(error);
		});

		return event;

	});

})()

REST APIは非同期処理です。

即ち、APIを実行している間に、後続の処理が並列して実行されます。

そのため、GETした情報を使って処理する場合は「.then()」に続く関数内に記述します。

「.then()」内の関数に引数として指定した「resp」はGET処理の結果です。

このrespオブジェクトの中にrecordオブジェクトが含まれ、この中に各フィールドの値が含まれます。

レコードに値を設定する場合は「kintone.app.record.get()」「kintone.app.record.set()」を使います。

「kintone.app.record.get()」「kintone.app.record.set()」については以下記事でも解説しました。

レコードを複数件取得する

レコードを複数件取得する場合はクエリを使い、条件を指定します。

以下のコードでは、日付が今日以降のレコードを取得し、その値をコンソールに表示します。

(() => {

	'use strict';

	kintone.events.on(['app.record.edit.submit'], async event => {

		const record = event.record;

		try {

			const params = {
				app: 129,	// アプリID
				query: '日付 >= TODAY() order by 日付 asc limit 500',	// クエリ
				fields: ['レコード番号', '数量']	// 取得フィールド
			};

			const resp = await kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', params);

			for (let i = 0; i < resp.records.length; i++) {
				console.log(`レコード番号:${resp.records[i].レコード番号.value} 数量${resp.records[i].数量.value}`);
			}

		} catch (e) {
			console.log(e);
		}

		return event;

	});

})()

order by」を指定することで、指定フィールドの昇順・降順で取得できます。

limit」を指定することで取得件数を指定できます。

指定しない場合は100件が上限ですが、最大500件まで指定できます。

クエリに使える条件式の書き方はこちらをご覧ください。

先に述べた通り、REST APIは非同期処理です。

例えば、レコード保存時や削除時にAPIを実行すると、その結果が返ってくる前に保存や削除が完了してしまいます。

先ほどは「.then()」の形で後続の処理を記述しましたが、他にも「async/await」などを使い、同期処理にすることができます。

こちらの方が処理の流れに沿って上から順に記述できるため、直感的にも分かりやすいです。

GET処理の結果であるrespには、recordsオブジェクトが含まれ、この中に各フィールドの値が含まれます。

recordsは配列のため、for文などでループ処理すれば、取得した全レコードに対して処理できます。

この記事のまとめ
  • kintoneのJavaScriptカスタマイズでは、REST APIを使えます。
  • レコード情報を取得するには、GET処理を行います。
  • GET処理は2種類あります。
    ・レコードIDを指定して1件取得する
    ・条件を指定して複数件取得する
  • REST APIは非同期処理です。同期処理にするには「async/await」を使います。
目次