初めて投稿させていただきます。
JS初心者で学習中のため、以下実装可能かをご教示いただきたいです。
過去のトピックを確認して、チェックボックスで選択された項目の値を文字列フィールドへカンマ区切り(,)で反映させるJSは構築できたのですが、選択された項目の値の一部分のみ 且つ 複数のチェックボックスの値を1つの文字列フィールドへ反映したいと考えております。
___________________________________
以下、Aアプリにある3つの【チェックボックスフィールド(X~Z)】で選択された項目の値のうち()内の値のみを文字列フィールドへ反映させたい。
複数選択された場合はカンマ(,)で区切る。
※()は全角を使用。
※()内はシリアル番号のため重複しない。基本的には半角英数字のみ。
___________________________________
(例)Aアプリ
【チェックボックスフィールドX(フィールドコード:CBX)】
【チェックボックスフィールドY(フィールドコード:CBY)】
【チェックボックスフィールドZ(フィールドコード:CBZ)】
- G(5555)
- H(678P)
- I(9A9B9C)
↓
【文字列1行フィールド(フィールドコード:文字列)】
___________________________________
お手数ですがご教示いただけますと幸いです。
よろしくお願いいたします。
ご返信ありがとうございます!
まだまだJSの知識・経験が乏しく、
「 取得した内容から()の中身を抽出」で躓いてしまいます
サンプルコード等、ご教示いただくことは可能でしょうか・・・?
Maple
(もみじ)
4
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
system
(system)
クローズされました:
7
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。