フォーム設定から特定のフィールドを取り出す
にメンテナンス済み
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']);
#JavaScript
#kintone