特定の文字だけを別フィールドへコピー

以下のコードを用いて、特定の文字列のみを抜粋し、別のフィールドへ抜粋した文字列を貼り付けたいです。

(function() {
“use strict”;
//レコード新規追加時、編集時に管理者フィールド変更時作動
kintone.events.on([“app.record.edit.change.Admin”,“app.record.create.change.Admin”], function(event) {

var rec = event.record;
//管理者フィールドに入力されているユーザー名の表示名を取得
var ADMIN = rec.Admin.value[0].name;
//検索用フィールドに表示名をセット
rec.Admin_Search.value = ADMIN;

return event;

});

})();

上記、コードは管理者フィールドがユーザー選択となっており、

ユーザー選択ではなく文字列(複数行)に変えて、

文字列(複数行)の中に入力された文字の中にAB001234という文字だけを

抜粋して.Admin_Searchというフィールドにコピーさせたいです。

※なお、ABの後の6桁の数字は6桁のままで数字がつどつど変わります。

 

上記のコードのままでフィールドもユーザー選択のまま使用し行うと、

選択された名前がそのまま、上手く.Admin_Searchフィールドへコピーができますが、文字列(複数行)に変える方法と特定の文字列だけを抜粋させる方法がわかりません。

 

教えてください。

 

 

ススム さん

 

お世話になります、渡辺と申します。

 

ススムさんの実現したい事は下記になるかと思います。

1:ある文字列から特定の文字列を抽出する。

2:1を行うタイミングは「文字列(複数行)」フィールドの値変更イベント

 

1については正規表現を使用すれば実現できるかと思います。

resultには対象の文字列が存在する場合、配列で取得し、

対象の文字列が存在しない場合、nullとなります。

// 文字列複数行フィールドの値を取得
var ADMIN = rec["文字列複数行"].value;

// 「"AB" + 数値6桁」に合致する文字列を取得
var result = ADMIN.match(/AB[0-9]{6}/);

 

2についてですが、「文字列(複数行)」フィールドは、値変更(change)イベントを拾えない様です。

https://developer.cybozu.io/hc/ja/articles/201941984#step3

リアルタイムでの変更でなくても良いのなら、登録(submit)イベントで

代用してはいかがでしょうか?

渡辺さん

 

お世話になっております。

ススムです。

 

教えていただきまして、ありがとうございます。

 

お恥ずかしい話ですが、渡辺さんから教えていただいたコードと

私が掲載したコードをどのように組み合わせてやればよいのか分からず、

大変申し訳ございませんが、教えていただけませんでしょうか。