やりたいこと
kintoneの連携コネクタを使い、ゲストスペースのアプリから通常スペースのアプリへデータをコピーします。コピー元のテーブル1行を、コピー先では1レコードとして登録しています。その設定手順と、過程で必要になった考え方をまとめています。
コピー元アプリの構成です。
- 連携元ID(文字列1行)
- 連携元テーブル(テーブル)
- 連携元テーブル_文字列
- 連携元テーブル_数値
コピー先アプリの構成です。テーブルは持ちません。
- 連携元ID
- テーブル内文字列
- テーブル内数値
テーブルが3行あれば、コピー先には3レコードが作成されます。どのレコードから生成された行かを判別できるよう、テーブル外の連携元IDも各レコードに保持させます。
前提
- 連携コネクタが利用できる環境
- コピー元アプリ(ゲストスペース、テーブルあり)
- コピー先アプリ(通常スペース、テーブルなし)
- 両アプリにアクセスできる認証コネクタ
完成した処理の構成
繰り返しが二重になります。外側がレコード単位、内側がテーブルの行単位です。
手順
レコードの一覧取得と繰り返し
「レコードの一覧取得」でコピー元のレコードを取得し、「繰り返し」に渡します。ここでレコードが1件ずつ処理されます。

一覧取得ではテーブルが展開されない
繰り返しの開始ステップで出力を確認すると、連携元IDやレコード番号は値がそのまま格納されていますが、テーブルは次のような形式になります。
配列の形式ではありますが、全行がひとつの値としてまとまっています。
この状態で「レコードの追加」を配置しても、テーブルの各行を個別のフィールドに割り当てることはできません。値として持ってこられるのは、この文字列全体になります。
繰り返しに渡せる形式になっていないため、テーブルを扱える形で取得し直す必要があります。
レコードの1件取得を挟む
繰り返しの中に「レコードの1件取得」を配置します。一覧取得と1件取得では、返却されるデータの形式が異なります。その後に、テーブルを対象とした「繰り返し」を配置します。

繰り返し対象にテーブルを指定する
追加した繰り返しの基本設定で「繰り返し対象」を開くと、1件取得の結果がArrayとして表示されます。この中から「連携元テーブル」を選択します。

一覧取得の結果のみの場合、テーブルは単一の値として扱われるため、繰り返し対象の選択肢には表示されません。選択肢に表示されるかどうかで、テーブルが展開されているかを判断できます。
出力を確認すると、階層を持った形式になっています。
レコードの追加で値を割り当てる
内側の繰り返しの中に「レコードの追加」を配置し、コピー先のフィールドへ値を割り当てます。

| コピー先のフィールド | 参照元ステップ | 取得元 |
|---|---|---|
| テーブル内文字列 | 3.3.1 | 内側の繰り返し(テーブルの行) |
| テーブル内数値 | 3.3.1 | 内側の繰り返し(テーブルの行) |
| 連携元ID | 3.2 | 外側の1件取得(レコード側の値) |
参照元が2か所に分かれる点に注意が必要です。
内側の繰り返しが保持しているのはテーブルの行のみで、テーブル外のフィールドは含まれません。レコード単位の値を各レコードに持たせる場合は、外側のステップから取得します。
この構成で実行すると、テーブル3行がコピー先の3レコードとして登録され、いずれにも同じ連携元IDが格納されます。
まとめ
- 一覧取得の時点では、テーブルは全行がひとつの値として渡されるため、繰り返し対象に指定できない
- 繰り返しの中で「レコードの1件取得」を実行すると、テーブルが繰り返し可能な形式で取得できる
- テーブル外のフィールドは内側の繰り返しに含まれないため、外側のステップから参照する
なお、テーブルをテーブルのまま書き込む方法については、今回は確認できていません。コピー先にテーブルを用意して指定を試みましたが、設定には至りませんでした。展開せずに渡す方法があれば、ステップ数を削減できる可能性があります。


