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

にメンテナンス済み

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

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

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

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

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

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

下のインタラクティブなエクスプローラでフィールド型を切り替えると、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 } フィールド
 * @returns { string } フィールドの値
 */
export const getFieldValueAsString = (field) => {
  if (
    field.type === 'MULTI_LINE_TEXT' ||
    field.type === 'RICH_TEXT' ||
    field.type === 'CREATED_TIME' ||
    field.type === 'DATE' ||
    field.type === 'DATETIME' ||
    field.type === 'DROP_DOWN' ||
    field.type === 'LINK' ||
    field.type === 'RECORD_NUMBER' ||
    field.type === 'STATUS' ||
    field.type === 'RADIO_BUTTON' ||
    field.type === 'TIME' ||
    field.type === 'UPDATED_TIME' ||
    field.type === '__ID__' ||
    field.type === '__REVISION__'
  ) {
    return field.value ?? '';
  } else if (
    field.type === 'SINGLE_LINE_TEXT' ||
    field.type === 'NUMBER' ||
    field.type === 'CALC'
  ) {
    const value = field.value ?? '';
    return value;
  } else if (
    field.type === 'CATEGORY' ||
    field.type === 'CHECK_BOX' ||
    field.type === 'MULTI_SELECT'
  ) {
    return field.value.join(separator);
  } else if (field.type === 'CREATOR' || field.type === 'MODIFIER') {
    return field.value.name;
  } else if (
    field.type === 'GROUP_SELECT' ||
    field.type === 'ORGANIZATION_SELECT' ||
    field.type === 'USER_SELECT' ||
    field.type === 'STATUS_ASSIGNEE'
  ) {
    return field.value.map((value) => value.name).join(separator);
  } else if (field.type === 'FILE') {
    return field.value.map((value) => value.name).join(separator);
  } else if (field.type === 'SUBTABLE') {
    const separator = ',';
    return field.value
      .map((row) =>
        Object.values(row.value)
          .map((cell) => getFieldValueAsString(cell, { separator }))
          .join(separator)
      )
      .join(separator);
  }
  return '';
};

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

また、kintone.app.record.get()などから取得したフィールド情報もそのまま渡すことができます。

フィールドタイプに応じて、値を文字列に変換して返却します。

#kintone #JavaScript #フィールド #文字列