kintone · DOCS

フィールドの値を文字列として取得

にメンテナンス済み

kintoneではREST APIを使ってレコード情報を取得することができますが、各フィールドが持つ値はフィールドタイプによって異なります。

例えば、文字列一行フィールドはfield.valueの型はstringとなりますが、チェックボックスやユーザー選択の場合、返す型はstring[]やobject[]です。

そのため、返り値が文字列であることを期待して処理を実行した際に、対象フィールドがチェックボックスやユーザー選択であった場合、エラーが発生する可能性があります。

この対策は、当然必要となる処理によって異なりますが、単純に画面上に表示したい場合であれば、それぞれのフィールドタイプに合わせて文字列に変換する処理を実装することが考えられます。

このページでは、フィールドタイプを問わず、フィールドの値を文字列として取得する方法を紹介します。

フィールド型ごとの「表示用文字列」を見比べる

下のインタラクティブなエクスプローラでフィールド型を切り替えると、record[fieldCode].value の生の型と、それを画面表示用に文字列化した結果を見比べられます。「コード例」タブには、その型に与えるべき変換処理のスニペットも表示されます。

フィールド値を文字列化するパターン

フィールド型ごとに「表示用の文字列」と、それを生成するコードをリアルタイムで確認できます。

文字・数値
選択系
日付・時刻
ユーザー・ファイル
システム
テーブル
チェックボックスtype: CHECK_BOXvalue: string[]複数選択。値は **string[]**。
値を取得する
// チェックボックス の値 (string[]) を取得
const body = kintone.app.record.get();
const record = body.record;

const values = record['フィールド'].value;
// => [
  "Slack",
  "Teams"
]

// 特定の値が含まれているか判定
if (values.includes('Slack')) {
  // ...
}
値を更新する
// チェックボックス の値を更新
const body = kintone.app.record.get();

body.record['フィールド'].value = [
  "Slack",
  "Teams"
];

kintone.app.record.set(body);
文字列として表示する
// 配列を結合して 1 つの文字列にする
const text = record['フィールド'].value.join(', ');

ソースコード

/**
 * 各フィールドタイプの値を文字列として返却します
 *
 * 配列で取得されるような値は区切り文字で連結されます
 * @param field { SavedFields } フィールド
 * @param options { { separator?: string } } separator: 配列値を連結する区切り文字(既定値は`,`)
 * @returns { string } フィールドの値
 */
export const getFieldValueAsString = (field, { separator = ',' } = {}) => {
  switch (field.type) {
    // 値が文字列(または未入力時のnull)で返るフィールド
    case 'SINGLE_LINE_TEXT':
    case 'MULTI_LINE_TEXT':
    case 'RICH_TEXT':
    case 'NUMBER':
    case 'CALC':
    case 'DATE':
    case 'DATETIME':
    case 'TIME':
    case 'DROP_DOWN':
    case 'RADIO_BUTTON':
    case 'LINK':
    case 'RECORD_NUMBER':
    case 'STATUS':
    case 'CREATED_TIME':
    case 'UPDATED_TIME':
    case '__ID__':
    case '__REVISION__':
      return field.value ?? '';

    // 文字列の配列で返るフィールド
    case 'CATEGORY':
    case 'CHECK_BOX':
    case 'MULTI_SELECT':
      return field.value.join(separator);

    // { code, name } のオブジェクトで返るフィールド
    case 'CREATOR':
    case 'MODIFIER':
      return field.value.name;

    // { code, name } のオブジェクトの配列で返るフィールド
    case 'GROUP_SELECT':
    case 'ORGANIZATION_SELECT':
    case 'USER_SELECT':
    case 'STATUS_ASSIGNEE':
      return field.value.map((value) => value.name).join(separator);

    // { name, fileKey, ... } のオブジェクトの配列で返るフィールド
    case 'FILE':
      return field.value.map((value) => value.name).join(separator);

    // テーブルは各行のセルを再帰的に文字列化する
    case 'SUBTABLE':
      return field.value
        .map((row) =>
          Object.values(row.value)
            .map((cell) => getFieldValueAsString(cell, { separator }))
            .join(separator)
        )
        .join(separator);

    default:
      return '';
  }
};

引数であるfieldは、kintoneのフィールド情報(typeとvalueを持つオブジェクト)です。REST APIから取得したレコードの各フィールドをそのまま渡すことができます。

また、kintone.app.record.get()やイベントオブジェクトのevent.recordから取得したフィールド情報も、そのまま渡すことができます。

フィールドタイプに応じて、値を文字列に変換して返却します。第2引数で区切り文字を変更できます。

注意点

  • 添付ファイルフィールドは、ファイル名のみを連結します。ファイルの中身を取得する場合は別途ファイルダウンロードAPIが必要です。
  • 未入力のフィールドは空文字を返します。ドロップダウンなど、未入力時にnullが返るフィールドも同様です。
  • フィールドタイプは今後追加される可能性があります。未対応のタイプは空文字を返します。
  • #kintone
  • #JavaScript
  • #フィールド
  • #文字列