kintoneの標準機能で、他のアプリにレコードのデータをコピーできる「アプリアクション」、便利ですよね~。


ただ、残念ながら、ラジオボタンやチェックボックス、複数選択フィールド、テーブルなどはコピーすることが出来ません。


また、コピーできるフィールドも、コピー元とコピー先のフィールド形式が一致していないと、コピーできないことが多いです。


Customineはアプリアクションと同じことを、自由度を大幅に上げて出来るようになっています!


例えば・・・



こんな複雑なコピーの仕方もできます!


アプリアクションと比べて大きな特徴は、


  • ラジオボタン、チェックボックス、複数選択フィールドをコピーできる。

  • コピーした値に手を加えてセットできる

  • コピー先がコピー元とは別のフィールド形式でもコピーできる

  • テーブルをコピーできる


となっています。


また、以前のTipsでもアプリアクションのような動きを再現しようとしていますが、あちらはコピー先のアプリにレコードを作成・保存してから、出来たレコードの編集画面に移動していますので、追加画面に移動するだけでレコードは保存しないアプリアクションとは少し動作が異なります。


今回のカスタマイズはアプリアクションと同様、追加画面に移動するだけでレコードは保存しない作りになっており、よりアプリアクションに近い動きになっています。


ただし、今回のカスタマイズはコピー元アプリ、コピー先アプリの両方にCustomineカスタマイズを入れる必要があり、2以上のアプリスロットが必要になります。

そのため、フリープランでCustomineをご利用の方はお使いいただけませんので、ご注意ください。


Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。


アプリのフォーム

コピー元アプリ



フィールドリスト


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

文字列(1行)

文字列_1行_


数値

数値

数値


ラジオボタン

ラジオボタン

ラジオボタン

選択肢:

「ラジオ1」「ラジオ2」

チェックボックス

チェックボックス

チェックボックス

選択肢:

「チェック1」「チェック2」

複数選択

複数選択

複数選択

選択肢:

「選択1」「選択2」

「選択3」「選択4」

ユーザー選択

ユーザー選択

ユーザー選択


日時

日時

日時


テーブル


テーブル



テーブル内のフィールドリスト


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

一列目(文字列)

一列目_文字列_


数値

二列目(数値)

二列目_数値_



※二つのアプリはフォームが似ていて、どちらのアプリなのかわかりづらいので、

 デザインテーマ設定をレッドに変更し、赤い配色にしています。


コピー先アプリ



フィールドリスト


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

文字列(1行)

文字列_1行_


数値

数値

数値


ラジオボタン

ラジオボタン

ラジオボタン

選択肢:

「ラジオ1」「ラジオ2」

チェックボックス

チェックボックス

チェックボックス

選択肢:

「チェック1」「チェック2」

文字列(1行)

複数選択コピー

複数選択コピー


ユーザー選択

ユーザー選択

ユーザー選択


文字列(1行)

ユーザー表示名

ユーザー表示名


日付

日付

日付


時刻

時刻



テーブル


テーブル



テーブル内のフィールドリスト


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

一列目(文字列)

一列目_文字列_


数値

二列目(数値)

二列目_数値_



実現の仕組み


指定のレコードを渡してレコード追加画面に遷移する」は特定のアプリのアプリIDとレコード番号を渡しつつ、別アプリのレコード追加画面に移動することができます。

渡されたアプリIDとレコード番号は、移動先のアプリで「前の画面から渡されたレコードを取得する」を実行することで、そのアプリIDとレコード番号を使ってレコードが取得され、そのレコードの情報を使うことができます。

コピー元アプリのカスタマイズ設定

ボタン設置

トリガーとなるボタンを置きます。

アプリアクションのボタンと同じような場所になるように置いてみます。



やること

ボタンをメニュー位置に配置する」です。設置場所は「レコード詳細メニューの上側」、ボタンに表示するラベルは「別アプリにコピーしてレコード作成」としています。

条件

詳細画面を表示した時」です。

指定のレコードを渡してレコード追加画面に遷移する

やること

指定のレコードを渡してレコード追加画面に遷移する」です。出来るだけ動作を本家アプリアクションに寄せていきたいので、追加画面は別タブで開くように設定します。


渡すレコードは自由に設定できますが、今回は現在表示しているレコードを渡したいので、渡すレコードのアプリは「コピー元アプリ」、渡すレコードのレコード番号はこのレコードのレコード番号なので「= レコード番号 」と設定します。

条件

ボタンを押した時」でアクション1で設定したボタンを押した時に動くようにします。



ここまででコピー元アプリの設定は終わりです。「kintoneアプリへ登録」を押して、アプリにカスタマイズを反映させてみましょう。


詳細画面にボタンが設置され、押したらコピー先アプリの追加画面を開くようになったと思います。


ただ、このままでは開いた追加画面は真っ白の状態なので、

ここから各フィールドに値をセットする処理を作成していきましょう。


ただし、ここからはコピー先アプリの追加画面上での処理になるので、

コピー先アプリのカスタマイズになります。

コピー先アプリのカスタマイズ設定

前の画面から渡されたレコードを取得する

やること

前の画面から渡されたレコードを取得する」です。「指定のレコードを渡してレコード追加画面に遷移する」で渡したレコードを取得します。このとき、取得先アプリを「指定のレコードを渡してレコード追加画面に遷移する」で指定したアプリにしないとレコードが取得出来ませんので注意しましょう。

条件

追加画面を表示した時」です。

セットしたい形式に変換(日時を日付と時刻に)

日付や時刻をフォーマットする」や「数値をフォーマットする」を使って値を別の形に変えてからセットしたい場合、先に変換しておく必要があります。

今回は日時フィールドの値を日付フィールドと時刻フィールドに分けたいので、「日付や時刻をフォーマットする」で変換します。


やること

日付や時刻をフォーマットする」を使います。「日付/時刻」には元の値を入れます。

ここではアクション1で取得したレコードの中の日時フィールドです。「他のアクションの結果」から選択していくと「= $1[0].日時 」という式が自動で入力されます。


日付に変換するアクションでは、「日付の書式」を「2018-01-25」、「時刻の書式」は「時刻表示なし」にします。


時刻に変換するアクションでは、「日付の書式」を「日付表示なし」、「時刻の書式」を「20:05」にします。


「セット先フィールド」を指定すればこのアクションだけでもフィールドに値をセットできるのですが、今回は次の「フィールド値をまとめてセットする」を使って各フィールドを同時に入れてしまおうと思うので、空にしています。

条件

他のアクションが完了した時」を使って順番に実行されるように設定します。


また、指定のレコードを渡してレコード追加画面に遷移する」で遷移してきた時以外はこれ以降のアクションは動いてほしくないので、レコード件数が1件以上ならばを追加しておきます。


各フィールドに値をセットする

コピー元のレコードから取得した値や、それを変換した値を各フィールドにセットしていきます。「フィールドに値をセットする」でも出来るのですが、「フィールド値をまとめてセットする」は複数のフィールドにまとめて値を入れることができる強化版です!


今回はこれを使って一気に各フィールドに値をセットしてみます。


やること

フィールド値をまとめてセットする」を使います。「マッピング」の部分をクリックすると以下のような画面が表示され、各フィールドに入れる値を入力することができます。



アクション1で取得したレコードの値をコピーするので「a」ボタンからアクション1を選択すると、コピー元フィールドの一覧が出てきますので、そこからフィールドを選択すると、「= $1[0].文字列__1行_ 」のように自動的に入ります。

計算してからセット

「= $1[0].数値 + 1」のように計算や文字列結合などをしながらセットすることも可能です。


選択式フィールドを文字列フィールドにセット

ラジオボタンなどの選択式のフィールドの値を文字列フィールドにセットすると、選択した項目の名前がそのまま文字列フィールドにセットされます。元がチェックボックス等の複数選択式で複数の項目が選択されている場合は、文字列フィールドにセットすると、項目の名前がカンマ区切りで順番に表示されます。


ユーザー選択フィールドのセット

ユーザー選択フィールドにユーザーを追加するには、ユーザー情報のログインIDをセットします。

「= $1[0].ユーザー選択.code」のように「.code」を付け足すと、ログインIDをセットすることができ、ユーザー選択フィールドでユーザーが選択されます。


文字列フィールドなどにユーザーの表示名だけ表示させたい場合は、

「= $1[0].ユーザー選択.name」のように「.name」を付け足します。


また、選択されたユーザーの中で特定のユーザーのみを入力したい場合は、「= $1[0].ユーザー選択[0].code」のように「[0]」など数字を入れることで〇番目のユーザーのみを入力することが出来ます。

数字は0から始まるので、「= $1[0].ユーザー選択[0].code」とすると一人目のユーザーのログイン名がセットされます。


日時フィールドを日付・時刻フィールドにセット

アクション2・アクション3でそれぞれ日付形式・時刻形式に変換した値を作成したので、それを参照します。


条件

他のアクションが完了した時」を使ってアクション3の後に動くようにします。


元のレコードのテーブルの中身をコピーする

こちらのTipsでも紹介していますが、取得したレコードの中から、テーブルの情報を取得して、現在の画面のテーブルにセットします。


やること

他のレコード内のテーブルをレコードとして取得する」と「レコードをテーブルに書き出す」を使います。

「他のレコード内のテーブルをレコードとして取得する」の「複数レコードがある場合」は今回は必ずレコードが一つなので、どちらでもいいです。


「レコードをテーブルに書き出す」の「マッピング」は以下の様になっています。



「既存の行」は「既存のテーブル行はクリアする」にしないと、デフォルトでセットされる空の一行が残ってしまいます。

条件

他のアクションが完了した時」を使って順番に実行されるように設定します。



テスト

これで設定は完了です。「kintoneアプリへ登録」を押して、アプリにカスタマイズを反映させてみましょう。


コピー元アプリのレコード詳細画面に戻り、再び「別アプリにコピーしてレコード作成」ボタンを押してみてください。


最初の図のように各フィールドがコピーされているはずです。


終わりに

kintoneの痒い所に手が届きまくるCustomine、また一つ痒みを止めてしまいました!


今回のカスタマイズは2アプリ以上にカスタマイズするちょっと複雑なカスタマイズでしたが、今回の様に複数アプリをカスタマイズすることで、便利さが別次元のものになることもあります。

今までできないと思っていたことも複数アプリでカスタマイズすれば出来るようになるかも?


Customineドキュメントサポートページもぜひご活用ください。