kintoneプラグインの作成に便利なライブラリを作成したので紹介します。
背景
kintoneプラグインを作る場合はアプリのフィールド情報が必要になります。
文字列1行フィールドやスペースフィールドを取得する場合は複数のAPIを実行しなければなりません。 また、テーブル内フィールドやグループ内フィールドの判定には一手間必要になります。
そこで、TypeScriptでkintoneのフィールドを取り扱いやすくするライブラリを作りました。
作ったもの
kintone-pretty-fieldsという名前でnpmに公開しました。 https://www.npmjs.com/package/kintone-pretty-fields
できること
1. kintone のフィールドとスペースフィールドをまとめて取得
import { KintoneRestAPIClient } from "@kintone/rest-api-client";
import { kintonePrettyFields } from "kintone-pretty-fields";
const client = new KintoneRestAPIClient();
const { fields, spacers } = await kintonePrettyFields.get({ client, app: 1, lang: "en", preview: false });
console.log({ fields, spacers });
2. フィールドの並び順をソート
「1」で取得したフィールドは、フォーム設定のフィールドの並び順になっています。(画面の左上が先で、右下が後)
フィールド数が100を超えるアプリは少なくありません。 フィールドを検索できるようになっているのがベストですが、そうではない場合少し役に立ちます。
3. テーブル内フィールドの判定
tableプロパティが存在する場合はテーブル内フィールドです。
{
type: 'SINGLE_LINE_TEXT',
code: '文字列__1行_',
label: '文字列 (1行)',
noLabel: false,
required: false,
minLength: '',
maxLength: '',
expression: '',
hideExpression: false,
unique: false,
defaultValue: '',
table: 'テーブル' // table field code
}
4. グループ内フィールド
groupプロパティが存在する場合はグループ内フィールドです。
{
type: 'SINGLE_LINE_TEXT',
code: '文字列__1行_',
label: '文字列 (1行)',
noLabel: false,
required: false,
minLength: '',
maxLength: '',
expression: '',
hideExpression: false,
unique: false,
defaultValue: '',
group: 'グループ' // group field code
}
5. ルックアップのコピー先フィールドの判定
isLookupCopyプロパティがtrueの場合はルックアップのコピー先フィールドです。
{
type: 'SINGLE_LINE_TEXT',
code: '文字列__1行_',
label: '文字列 (1行)',
noLabel: false,
required: false,
minLength: '',
maxLength: '',
expression: '',
hideExpression: false,
unique: false,
defaultValue: '',
isLookupCopy: true // If true, lookup copy destination field
}
6. 選択肢のソート
sortedOptionsプロパティに選択肢をindexでソートした配列をセットします。
{
type: 'CHECK_BOX',
code: 'チェックボックス',
label: 'チェックボックス',
noLabel: false,
required: false,
options: {
sample1: { label: 'sample1', index: '0' },
sample4: { label: 'sample4', index: '3' },
sample3: { label: 'sample3', index: '2' },
sample2: { label: 'sample2', index: '1' }
},
defaultValue: [],
align: 'HORIZONTAL',
sortedOptions: [ 'sample1', 'sample2', 'sample3', 'sample4' ] // sorted options
}
インストール方法
> npm install kintone-pretty-fields
使い方
import { KintoneRestAPIClient } from "@kintone/rest-api-client";
import { kintonePrettyFields, kintonePrettyType } from "kintone-pretty-fields";
const client = new KintoneRestAPIClient();
const { fields, spacers } = await kintonePrettyFields.get({ client, app: 1, lang: "en", preview: false });
console.log({ fields, spacers });
const checkBoxFields = fields.filter(kintonePrettyFields.isCheckBox);
console.log(checkBoxFields);
const inSubtableFields = fields.filter(kintonePrettyFields.enableInSubtable).filter(kintonePrettyFields.isInSubtable);
console.log(inSubtableFields);
const myFunction1 = (fields: kintonePrettyType.OneOf[]) => {
// do something
};
const myFunction2 = (field: kintonePrettyType.CheckBox) => {
// do something
};