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


現在はラジオボタンやチェックボックス、複数選択フィールド、テーブルなどもコピーすることが出来るので、とても便利になっています。


ですが、コピーできるフィールドも、コピー元とコピー先のフィールド形式が一致していない場合や、コピーした値を使って計算や結合によって変換してからコピー先のレコードにセットしたい場合などには、標準機能では対応できません。

Customineなら柔軟に対応できます!

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


例えば・・・



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


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


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

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


となっています。


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


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


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

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


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


記事の流れ

  1. 実現の仕組み

  2. 基本的な使い方

  3. 応用編

3.1 -色々なコピー-

3.2-テーブルのコピー-

  1. 終わりに



実現の仕組み


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

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


基本的な使い方

まずは最も単純な、1つの文字列フィールドだけをコピーして他のアプリの追加画面にセットする設定の仕方をご紹介します。

上の画像で挙げたような複雑なコピーの方法は、下の方にある応用編をご覧ください。


アプリのフォーム

コピー元アプリ、コピー先アプリ共に、文字列(1行)フィールドを一つ置いているだけです。





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


2アクションです!



ボタン設置

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

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




やること

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


条件

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


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


やること

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


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


条件

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



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


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


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

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


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

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


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


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



やること

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


条件

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


この条件だと、コピー元のアプリで「別アプリにコピーしてレコード作成」ボタンを押した時だけでなく、通常のレコード追加時やレコード再利用時にも動いてしまいます。

その場合も、このアクションは実行されてしまいます。

エラーにはなりませんが、レコードは取得されないため、これ以降のアクションが実行されると以下のよう現象が発生することがあります。


  • 元のレコードの値を別の形に変換するときにエラーが発生する。

  • レコード再利用時に、値がコピーされたフィールドが空白の値で上書きされてしまう。


そこで、この次のアクションは、レコードが取得された時のみ実行されるように、この次のアクションの条件に「レコード件数が1件以上ならば」を追加します。


取得したレコードの中のフィールドの値をフィールドにセットする



やること

フィールドに値をセットする」を使います。

値の部分は「他のアクションの値」ボタンで、アクション1で取得したレコードの中の文字列(1行)フィールドを選択すると、「= $1[0].文字列__1行_ 」と自動で入力されます。


条件

他のアクションの実行が完了した時」を使います。

アクション1が実行された直後に実行されるように設定します。


さらに、「レコード件数が1件以上ならば」を追加します。

理由は前述のとおりです。





これでアプリアクションと同じ動きができるようになったはずです!

コピー元アプリでに設置した「別アプリにコピーしてレコードを作成」ボタンを押してみてください!




応用編

ここまではアプリアクションと同じ動きをCustomineで再現できる、という話でしたが、ここからがスーパーアプリアクションの本気!アプリアクションではコピーできないフィールドのコピーやテーブルのコピーの方法などを紹介していきますよ!


アプリのフォーム

コピー元アプリ



フィールドリスト


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

文字列(1行)

文字列_1行_


数値

数値

数値


ラジオボタン

ラジオボタン

ラジオボタン

選択肢:

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

チェックボックス

チェックボックス

チェックボックス

選択肢:

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

複数選択

複数選択

複数選択

選択肢:

「選択1」「選択2」

「選択3」「選択4」

ユーザー選択

ユーザー選択

ユーザー選択


日時

日時

日時


テーブル


テーブル



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


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

一列目(文字列)

一列目_文字列_


数値

二列目(数値)

二列目_数値_



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

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


コピー先アプリ



フィールドリスト


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

文字列(1行)

文字列_1行_


数値

数値

数値


ラジオボタン

ラジオボタン

ラジオボタン

選択肢:

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

チェックボックス

チェックボックス

チェックボックス

選択肢:

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

文字列(1行)

複数選択コピー

複数選択コピー


ユーザー選択

ユーザー選択

ユーザー選択


文字列(1行)

ユーザー表示名

ユーザー表示名


日付

日付

日付


時刻

時刻



テーブル


テーブル



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


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

一列目(文字列)

一列目_文字列_


数値

二列目(数値)

二列目_数値_



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

こちらは基本編と同じです。





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

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


やること

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


条件

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


応用編1-色々なコピー-


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

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

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



やること

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

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


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


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


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


条件

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


また、「前の画面から渡されたレコードを取得する」の直後のアクションには、レコードが取得された時のみ実行されるように、条件に「レコード件数が1件以上ならば」を追加します。


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

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

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



やること

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



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


計算してからセット

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


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

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


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

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

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


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

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


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

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


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

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


条件

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


応用編2-テーブルのコピー-

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

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



やること

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

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


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



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


条件

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


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


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


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


終わりに

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


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

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


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