kintoneと連携したモバイルアプリをUnifinityで作成する方法について、ご紹介いたします。
今回は、kintoneのREST APIを利用して、kintoneのルックアップフィールドにレコードを登録する方法をご紹介します。
以前の記事で紹介したユーザー認証は必要となりますので、適宜ご確認ください。
解説で使用しているkintoneのアプリ・Unifinityのサンプルプロジェクトを以下よりダウンロードすることができます。ぜひご活用ください。
【kintone】ルックアップ登録&登録用マスタ
【Unifinity】kintoneルックアップ登録アプリ
作成するアプリの概要
kintoneのルックアップ登録用マスタのレコードを取得し、UnifinityのDBに格納。その後、当該マスタのデータを基に、ルックアップフィールドにレコードを登録するモバイルアプリを作成します。
kintoneの設定
今回は、ルックアップのレコードを登録するアプリと、ルックアップのコピー元となる登録用マスタの2つのアプリを作成してください。
登録用マスタのアプリを設定する際に、コピー元のフィールド(今回は氏名)を重複禁止にする必要がありますので、ご注意ください。また登録用マスタには、2~3レコードほどデータをご登録ください。
【登録用マスタ】
【登録】
連携するためには、kintoneのサブドメイン名・アプリID・各フィールドのフィールドコードが必要となります。
・ サブドメイン名・アプリIDは、アプリ接続時のURLの以下の部分から確認できます。
・各フィールドのフィールドコードは、アプリの設定画面から確認できます。
Unifinityの連携設定
今回、
① 登録用マスタのレコードを取得してDBに格納し、
② 格納したデータから値を選択して、ルックアップフィールドに登録
するアプリを作成しますので、画面作成・DB作成・処理作成を説明していきます。
※ 基本的なUnifinityの操作は、こちらのチュートリアル動画をご覧ください。
0. 準備
前回の記事で紹介したユーザー認証をアプリ内にご準備ください。
また、kintoneの設定で確認したサブドメイン名を、プロパティのグローバル変数に設定します。
1. 画面作成
① ルックアップフィールドの登録値を選択するコンボボックスを配置します。
② kintoneにレコードを登録するボタンを配置してください。
画面作成は、一旦、これで完了です(2.3.の設定後、更新する箇所があります)。
2. DB作成
kintoneから取得したデータの情報を格納させるため、Unifinity内のDBを作成します。
① 格納用DBを作成します。
データファイルを作成後、kintoneのアプリから取得したい項目について、項目名・物理項目名に分かりやすい名称を入力してください。
また、データが空になる可能性がある項目には、空許可にチェックをいれてください。
※物理項目名はアルファベット+数字(アルファベットから始める必要あり)で設定が必要となりますのでご注意ください。
DB作成は、これで完了です。
3. 処理作成
まず、登録用マスタのレコードを取得してDBに格納する動作を作成します。
① サブドメイン名の呼び出し
#2 | 「変数/グローバル変数取得」を使って、グローバル変数に設定したkintoneのサブドメインを読み込みます。 |
② ユーザー認証情報の呼び出し
#4 | 「データベース/取得」を使い、DBに記憶された「ユーザー認証情報(X-Cybozu-Authorization:●●●)」を読み込みます。(0. 準備で記載したユーザー認証をアプリ内にご準備いただき、そちらのDBを指定してください) |
③ kintoneにデータ取得をリクエスト
#6 | 「データベース/削除」を使い、2.で作成したDBに格納されている過去のkintoneのデータを削除します。 |
#7 | 「文字列関数/連結」を使い、kintoneで決められているRESTAPIのURI(https://(サブドメイン名).cybozu.com/k/v1/records.json)を生成します。 今回は、サブドメイン名を呼び出した#2の内容と「/k/v1/records.json」とを連結しています。 kintoneのRESTAPIの詳細はこちらをご覧ください。 |
#8 | 「ネットワーク/HTTPリクエスト」を使い、kintoneにデータを送信します。 以下のように、各項目を設定してください。 ※appに対応する値を空にしていますが、取得したいアプリのappIDを入力してください。 |
④ 取得したデータの内容を確認
#10 | 「ディクショナリー/取得」を使用して、キー:Bodyを取得します。 |
#11 | 「ダイアログ/入力」を以下のように設定し、#10の結果を表示させます。 これはアプリ作成時の確認用として使用するため、本番稼働する場合には、処理行の一番左にある無効のチェックボックスにチェックをいれてください。 なお、ここで取得したレスポンスに応じて以後の処理を変えていただく必要がありますので、こちらのようなJSONパーサーにいれて見やすくすることがオススメです。 こちらは少々難しいので、お困りになりましたら弊社までお問合せください。 |
⑤ kintoneのレスポンスをDBに格納
#13 | 「ディクショナリー/JSON読込」を使って、#10のJSONをディクショナリーに変換します。 |
#14 | 「ディクショナリー/取得」を使用して、キー:recordsを取得します。 |
#15 | #14で取得したrecordsの中身に配列化された複数のレコードが格納されているため、「制御文/Foreach(繰り返し開始)」の処理を行い、1レコードずつDBに格納していきます。 なお、これと対応する「制御文/繰り返し終了」が最後に必要となります。 |
#16 | 「ディクショナリー/取得」を使い、#15の結果からキー:kintoneのフィールドコード(今回は文字列)を取得します。 |
#17 | 「ディクショナリー/取得」を使い、#16の結果からキー:value(固定)を取得します。 |
#18 | 「ディクショナリー/取得」を使い、#15の結果からキー:kintoneのフィールドコード(今回は文字列)を取得します。 |
#19 | 「ディクショナリー/取得」を使い、#18の結果からキー:value(固定)を取得します。 |
#20 | 「データベース/追加」を使い、2.で作成したDBにkintoneから取得したデータを以下のように追加します。 |
#21 | 「制御文/繰り返し終了」を使い、処理を終了させます。 |
⑥ ①~⑤で作成した動作を、ログイン時に実施
ユーザー認証のロジックの最後に以下の処理を追加します。
#18 | 「制御文/処理実行」を使い、①~⑤で作成した処理を実行します。 |
次に、格納したデータから値を選択して、kintoneのルックアップフィールドに登録する動作を作成します。
① サブドメイン名の呼び出し
#2 | 「変数/グローバル変数取得」を使って、グローバル変数に設定したkintoneのサブドメインを読み込みます。 |
② ユーザー認証情報の呼び出し
#4 | 「データベース/取得」を使い、DBに記憶された「ユーザー認証情報(X-Cybozu-Authorization:●●●)」を読み込みます。(0. 準備で記載したユーザー認証をアプリ内にご準備いただき、そちらのDBを指定してください) |
③ kintoneに送信するためのフォーマットへ、データを整形
kintoneにデータを登録するにあたっては、kintone側が定めるフォーマット(今回はこちら)にデータを整形することが必要です。
以下のようなフォーマットへの整形が必要となり、その方法を以下でご紹介します。
#6 | 「コントロール/内容取得」を使って、画面に入力された内容を選択します。 |
#7 | 「ディクショナリー/作成」を使用して、整形していきます。 "value": "(フィールド値)"というフォーマットを作成するために、キーにvalueを入力し、値に#6の内容を選択してください。 |
#8 |
次に、"(フィールドコード)": {#7}というフォーマットを作成します。 |
#9 |
最後に、{"app": "(アプリのID)","record": {#8}}というフォーマットを作成します。 |
#10 |
最後に、整形した要素をJSONフォーマットに加工します。 |
④ kintoneへのデータ送信
kintoneにデータを登録するにあたっては、kintone側が定めるURI(今回はこちら)にデータを送信することが必要です。
#12 | 「文字列関数/連結」を使い、kintoneで決められているRESTAPIのURI(https://(サブドメイン名).cybozu.com/k/v1/record.json)を生成します。 今回は、サブドメイン名を呼び出した#2の内容と「/k/v1/record.json」とを連結しています。 |
#13 |
「ネットワーク/HTTPリクエスト」を使い、kintoneにデータを送信します。 |
4. 紐づけ
今回は画面とデータベース及び処理を紐づけていきます。
① 画面のコンボボックスとデータベースの紐づけ
コンボボックスを選択し、データ>リストにて、テーブル名に2.で作成したDBを選択し、キーフィールド名・値フィールド名を、ルックアップフィールドに登録する項目を選択してください。
※キーフィールドはコントロール/内容取得をした際に返される値、値フィールドはコンボボックスのリストに表示させる値です
② 画面のボタンと処理の紐づけ
最後にレコード登録ボタンに、3.で作成したルックアップへのレコード登録処理を紐づけて完成です。
次回は、kintoneのユーザー選択フィールドにレコードを登録するアプリの作成方法をご紹介します。
なお、今回の解説で使用したkintoneのアプリ・サンプルプロジェクトは、以下よりダウンロードすることができます。