チェックボックスで選択された項目の値の一部分を文字列フィールドへ反映させたいです

初めて投稿させていただきます。
JS初心者で学習中のため、以下実装可能かをご教示いただきたいです。

過去のトピックを確認して、チェックボックスで選択された項目の値を文字列フィールドへカンマ区切り(,)で反映させるJSは構築できたのですが、選択された項目の値の一部分のみ 且つ 複数のチェックボックスの値を1つの文字列フィールドへ反映したいと考えております。

___________________________________

以下、Aアプリにある3つの【チェックボックスフィールド(X~Z)】で選択された項目の値のうち()内の値のみを文字列フィールドへ反映させたい。
複数選択された場合はカンマ(,)で区切る。
※()は全角を使用。
※()内はシリアル番号のため重複しない。基本的には半角英数字のみ。
___________________________________

(例)Aアプリ

【チェックボックスフィールドX(フィールドコード:CBX)】

  • A(1234)
  • B(987A)
  • C(158A5

【チェックボックスフィールドY(フィールドコード:CBY)】

  • D(QWER)
  • E(456C)
  • F(K456)

【チェックボックスフィールドZ(フィールドコード:CBZ)】

  • G(5555)
  • H(678P)
  • I(9A9B9C)

【文字列1行フィールド(フィールドコード:文字列)】

___________________________________

お手数ですがご教示いただけますと幸いです。
よろしくお願いいたします。

実現可能と思います。
簡単な組み方としては、

  1. 各フィールドに レコード編集画面でフィールドの値を変更したときのイベント - cybozu developer networkの処理を追加してチェックボックスのオンオフの都度、現在オンになっているチェックボックスの内容を取得
  2. 取得した内容から()の中身を抽出
  3. 抽出した文字列を結合し、文字列1行フィールドへ登録

という感じになるかと思います。

「いいね!」 1

ご返信ありがとうございます!

まだまだJSの知識・経験が乏しく、
「 取得した内容から()の中身を抽出」で躓いてしまいます:downcast_face_with_sweat:

サンプルコード等、ご教示いただくことは可能でしょうか・・・?

CBXの分だけですが。
これでも分からなかったら「JavaScript (分からない用語)」とかでググってください。

const record = event.record;

// CBXの値を1つずつ処理して、全角括弧内の値を抽出する。
// `.map()`メソッドを使用して、配列の各要素に対して以下の処理を適用。
// `value`はチェックされた項目の1つを表す。
const serialNumbers = record.CBX.value.map((value) => {

    // `.match()`メソッドを用いて正規表現に基づく検索をする。
    // 正規表現 `/((.+?))/` の説明:
    // - `(` はエスケープされた全角括弧の開始を表す。
    // - `(.+?)` は、任意の1文字以上を非貪欲(必要最小限)に抽出する。
    // - `)` はエスケープされた全角括弧の終了を表す。
    // この正規表現で、全角括弧があれば、その中の文字列を抽出できる。
    const match = value.match(/((.+?))/);

    // 三項演算子で条件を判定。
    // - `match`がnullでない(つまり全角括弧内に1文字以上あった)場合
    // `match[1]`(抽出された文字列)を返す。
    // - 一致しなかった場合は空文字 `''` を返す。
    return match ? match[1] : '';

});
「いいね!」 3

ありがとうございます!!!!

正規表現で抽出できるまでは理解できたのですが、そのあとコードを書いてみても実行できず躓いておりました・・・・

いただいたコードで再度トライしてみます。
本当にありがとうございます!m(__)m

無事、実装ができました!:sob::sparkles:

引き続き学習していきたいと思います。

本当に本当にありがとうございました!!

「いいね!」 2

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。