Ribbit's works

APIで取得したフォーム設定から、指定したフィールドのみを抽出する

#JavaScript #kintone
にメンテナンス済み
記事のトップ画像

kintone では API を使用して、指定したアプリの各フィールド情報を取得することができます。

ただ、この API のリクエストパラメーターはアプリ ID と言語の設定しかできず、指定したアプリのすべてのフィールドが取得されます。

レコード ID や作成日付、更新日付などの、アプリが標準で持っているフィールドや、使用していないカテゴリーフィールドなども取得されてしまいます。

今回は、API を使用して取得したフォーム情報から、指定したフィールドのみを抽出する方法を紹介します。

汎用的な関数の定義

まず、次のような関数を定義します。

export const filterFieldProperties = (properties, callback) => {
  const filtered = Object.entries(properties).filter(([_, value]) => callback(value));

  const reduced = filtered.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});

  return reduced;
};

関数は API から取得した全フィールドと、その絞り込み条件を受け取ります。

各フィールドに対して、指定した条件に当てはまるフィールドのみを返却します。

Object.entrie でフィルターして、その後 reduce しているのは、受け取った型と同じ状態に戻すためです。

使用例

/* 文字列1行フィールドのみ抽出した一覧 */
const filterd = filterFieldProperties(
  properties,
  (property) => property.type === 'SINGLE_LINE_TEXT'
);

指定したフィールドタイプを除外する

前述した関数を使用して、フィールドタイプを配列で指定し、全フィールドから取り除く関数を紹介します。

export const omitFieldProperties = (properties, omittingTypes) => {
  return filterFieldProperties(properties, (property) => !omittingTypes.includes(property.type));
};

使用例

/* 全フィールドから、レコード番号と作成者を取り除いたフィールド一覧 */
const omitted = omitFieldProperties(properties, ['RECORD_NUMBER', 'CREATOR']);