注意事項
- サンプルプラグインは、その動作を保証するものではありません。
- サンプルプラグインの技術的なサポート等は行っていません。
- フィールドが結合元フィールドとして選択された場合は、もっとも初めに選択された値のみを結合します。(配列の0番目)
- チェックボックス
- 複数選択
- ユーザー選択
- 組織選択
- グループ選択
- kintoneプラグインはスタンダードコースでのみご利用いただけます。ライトコースではご利用いただけませんのでご注意ください。
概要
通常の連結機能では、文字列や数値などの連結はできますがルックアップやラジオボタンなどを含めることができません。
本プラグインは計算フィールドで適用できないフィールドを結合するためのプラグインです。下記が機能の概要です。
- 結合項目が3つまで設定可能
- 1結合項目あたり5つまでのフィールドの結合が可能
- フィールド間の記号を自由に選択可能
設定画面(設定例)
レコード詳細画面(レコード登録後)
プラグインを利用する
STEP1:フォームを設定する
アプリのフォームを設定します。
結合の対象として適用可能なフィールド形式は
STEP3の選択可能フィールドを参照ください。
-
結合した文字列を表示するためのフィールドを作成ください。
フィールドは文字列、文字列複数行、リッチエディターから選択できます。
※結合された文字列を表示するフィールドは編集不可となり結合された文字列を表示するためフィールドとなります。
STEP2:アプリにプラグインを追加する
アプリに文字列結合プラグインを追加します。プラグインの追加方法は、kintone ヘルプを参照してください。
STEP3:プラグインを設定する
1.アプリ管理画面の「詳細設定」>「プラグイン」を開き
文字列連結プラグインの歯車マークをクリックします。
2.各項目を設定します。
項目名 | 説明 |
結合する項目 |
結合の対象となるフィールドを選択できます。(最大5つまで)
結合の対象として選択できるフィールドタイプは下記です。
|
項目間の記号 | 結合される項目の間に表示される記号を入力します。 未選択の場合、各項目が直接結合されます。 |
結合された文字列を表示する項目 |
結合された文字列を表示するフィールドを選択します。表示先として選択できるフィールドタイプは下記です。
|
保存時の入力値チェック |
「結合する項目」に指定したフィールドに値が入っていないとき、アラートで注意を表示したい場合はチェックを入れてください。 |
3.[保存]をクリックします。
4.[アプリの設定]画面で[設定完了]をクリックすると、プラグインの設定がアプリに反映されます。
STEP4:プラグインを利用する
レコードを登録します。対象として選択したフィールドに変更があると、プラグインで設定されたフィールドに連結された文字列が入ります。
保存ボタンを押した際に、結合された文字列がプラグインで設定された対象のフィールドに保存されます。
※「保存時の入力値チェック」が有効になっているとき、結合元として設定したフィールドに空白がある場合はダイアログで保存の確認が表示されます。
保存確認のダイアログイメージ
サンプルプラグイン
GitHub にアクセスしてフォルダごとダウンロードしてください。そのフォルダ内の「examples/textConnect」に、今回のファイル群があります。
ファイル構成は次のとおりです。
textConnect/ config_css/
-config.css config_js/ -config.js
contents/
-icon.png
-setting.html
desktops/
-desktop.js
manifest.json
こちらの手順を参考にパッケージングします。
パッケージングしたサンプル
プラグイン開発のためのサンプルであり、サポート対象外であることをご理解の上、ダウンロードしてください。
SAMPLE_text_connect_plugin_v1.3.5.zip
更新履歴
2016/06/30 v1.0 を公開しました
2017/02/10 v1.1 を公開しました:プラグイン設定画面で何も設定しない場合はレコード登録できない不具合を修正しました。
2017/11/01 v1.1.1 を公開しました:プログラムで使用しているフォーム設計情報取得APIを、フィールドの一覧を取得するAPIに置き換えました。
2017/11/20 v1.2.0 を公開しました:設定できる結合項目を3つまで追加しました。
- 結合対象の文字列に値が存在しない場合の結合結果を変更しました。
【例】
文字列A 文字列B 文字列C を 結合記号 『,』 で結合するとき、文字列Bに値が存在しない場合の動作は下記のとおりです。
- v1.2.0 まで:『文字列A,,文字列C』という結果になる。
- v1.2.1 から:『文字列A,文字列C』という結果になる。
- 設定項目のローカライズ対応(英語)を行いました。
2019/01/09 v1.3.0 を公開しました:下記の対応を行いました。
- モバイル対応を行いました。
- 「結合する項目」にチェックボックスや複数選択が設定された状態で、結合対象の文字列に値が存在しない場合の結合結果が正しくなるよう修正しました。
(結合結果は、更新履歴v1.2.1 に記載された内容と同様になります)
2019/02/01 v1.3.1 を公開しました:下記の対応を行いました。
- 不具合改修:「項目間の記号」に半角スペース、または全角スペースを設定した際のエスケープ処理
2019/04/05 v1.3.2 を公開しました:下記の対応を行いました。
- 設定画面に「保存時の入力値チェック」の項目を追加
- 「保存時の入力値チェック」が有効なときのみ、レコード保存時に未入力チェックを行うよう変更
- 不具合改修:v1.3.1の修正のモバイル対応
2020/05/29 v1.3.3 を公開しました:設定項目のローカライズ対応(中国語)を行いました。
2021/02/25 v1.3.4 を公開しました:利用していない jQuery を削除しました。
2022/10/05 v1.3.5を公開しました:フロントエンド基盤の刷新に対応しました。
制限事項
- 次のフィールドは文字結合の対象外となります。
- レコード番号
- 作成者
- 更新者
- 作成日時
- 更新日時
- リッチエディター
- テーブルに含まれるフィールド
- カテゴリー
- ステータス
- 作業者
- 添付ファイル
利用している OSS のライセンス情報
このプラグインで利用している OSS のライセンスは次のとおりです。
- jQuery - MIT License
- JsRender - MIT License
- SweetAlert - MIT License
- 51-modern-default - MIT License
1アプリ内で1つ以上の結合をしたい場合はどのようにしたらいいでしょうか。
たとえば、会社名+部署名=送付先 という項目に、 住所+建物名=正式住所という項目に、1アプリ内で2つの結合項目を作成したい場合です。
最初、結合先に自動計算で設定していたのですが、自動計算ではいずれかに入力がされていないとエラー(#N/A)となってしまう為、こちらのプラグインを利用したかったのですが、何か回避策がありましたら教えていただきたいです。
よろしくお願い致します。
岩崎 様
ご質問ありがとうございます。
こちらのプラグインは一つ結合項目しか作成できません。
ご要望に応えずに申し訳ございません。
>自動計算ではいずれかに入力がされていないとエラー(#N/A)となってしまう
あまり望ましくない方法ですが、スペースを入れることで#N/Aがなくなります。
ちなみに、複数の結合項目を作成できるようにこちらのプラグインのバージョンアップを検討しております!
>cybozu Development team様
ありがとうございます。初期値にスペースを入れておくことでは駄目で、入力値がない時はスペースを入れる、という対応をしなくてはいけないのですね。
こちらのプラグインのバージョンアップは是非ともお願いしたいです。
それまでの間、Javascriptでの対応は可能でしょうか。もし方法がありましたらご教示いただければありがたいです。よろしくお願い致します。
岩崎 様
>入力値がない時はスペースを入れる、という対応をしなくてはいけないのですね
仰る通りです><
>Javascriptでの対応は可能でしょうか。もし方法がありましたらご教示いただければありがたいです
Javascriptでの対応は可能です。
大体のイメージは↓の感じです。
var event = ['app.record.edit.submit', <--フィールドの値を変更する時点で結合したい場合、そのフィールドのchangeイベントを追加
'app.record.create.submit',
'app.record.index.edit.submit'
];
kintone.events.on(event, function(e) {
var record = e.record;
var separator1 = "/"; <----結合するフィールド間の記号、ここは/を指定しています
var joinFieldArry1 = [ <----結合するフィールドの配列
record.会社名.value,
record.部署名.value
]
record.送付先.value = String(joinFieldArry1.join(separator)); <------送付先は結合した文字列を表示するフィールドコード
//上記ソースコードをコピーしてフィールドコードを変更すれば、他の結合項目もカスタマイズできます
});
また、こちらのコメントは当記事へフィードバックいただくための場所です。
カスタマイズに関するご質問はcybozu developer コミュニティをご活用いただければ幸いです。
どうぞよろしくお願いいたします。
> cybozu Development team様
ありがとうございます。引き続き、当プラグインのバージョンアップ検討をお願い致します!
こちらのプラグインについて、
設定後すでに登録されているレコードに結合された表示を適用させるには、どうすればいいでしょうか。
レコード番号と結合したいレコードを書出して読み込みを試しましたが、一括での適用ができません。
ひとつずつレコードを編集で開いて保存をすると、ちゃんと適用されます。
iwamoto様
詳細画面へのリロード処理などが必要になるかと思われます。
こちらの投稿に、年令計算の例ですが、参考になりそうなサンプルがあります。
https://developer.cybozu.io/hc/ja/community/posts/202311534
または、上記の投稿と同様、新規にcybozu developer コミュニティに投稿いただくのも良いかと存じます。
あまりお役に立てず申し訳ありませんが、よろしくお願いいたします。
こちらのプラグインはcsv取り込みをした際にも文字結合は出来るのでしょうか?
また、csv取り込みを50件した際に、結合対象フィールドのうち1件でもブランクがあった場合には、50件全て文字結合されない仕様でしょうか?
Maru様
コメントいただきありがとうございました。
csv取込をしたデータも結合されますが、データにブランクのある/なしに関わらずcsvを取り込んだ段階では「結合された文字列を表示する項目」はブランクとなり、
編集画面を開いて保存した段階で、結合した文字列が保存されます。
csvで取り込んだ場合に、一括で文字列結合したい場合はどのようにすれば良いでしょうか?
やりたいこととしては、文字列フィールドの結合なので、計算フィールドで対応できそうでした。
失礼いたしました。
Maru様
解決されたとのことで良かったです。
また何かありましたら、よろしくお願いいたします。
担当者様
日付と時間を合わせて日時にコピーしたいのですが、
なにかご存知でしたら教えていただけませんでしょうか?
「日付+時間=日時」というイメージのものを作成したいです。
日付はプラグイン(スケジュール関係)の都合で必要であり、
また、日時の重複を防ぎたいので、
日付と時間を合わせた日時を自動で作成したいです。
日付と日時を使用したら出来るのですが、
日付を2度入力する必要があるため、これを避けたいです。
お手数ですが、返答いただけると幸いです。
kawamura 様
本プラグインでは、日付フィールドと時刻フィールドの値を結合して、「文字列(1行)」フィールドに値を自動保存することが可能です。
保存先のフィールドを「日時」フィールドにしたいということであれば、プラグインの改修をご検討ください。
なお、こちらは記事に関するフィードバックを受け付ける場所です。
恐れ入りますが、技術的なことでお困りの際はコミュニティをご活用ください。
どうぞよろしくお願いいたします。