2026年5月20日にリリースされたサイボウズの「連携コネクタ」。
その1からその3までで、kintoneのアプリ間のレコードコピーを試していましたが、前回その3で「複数添付ファイルのコピー」が難しい、としたところ、
cybozu developer communityの投稿で、変換テーブルを使った方法を教えていただきました。
今回は、その方法で複数添付ファイルのコピーを実装した方法について記載します。
変換テーブルについて
まず、連携コネクタの「変換テーブル」について簡単にまとめます。
連携コネクタのページには以下のような説明があります。
変換テーブルとは、キーと変換値の対応表を作成し、連携コネクタのシナリオ内で利用できる機能です。 kintoneのユーザーIDやレコードのキーを起点に、他サービスのIDや名称を取得するなど、サービス間の橋渡しに活用できます。
変換テーブルには、「キーの列名」と「変換バリューの列(最大4つ)」が指定できます。以下が変換テーブルの例です。
| キー | 変換バリュー1 | 変換バリュー2 | 変換バリュー3 | 変換バリュー4 |
|---|---|---|---|---|
| フルーツ | いちご🍓 | りんご🍏 | ぶどう🍇 | もも🍑 |
| 動物 | いぬ🐕️ | ねこ🐈️ | きりん🦒 | ぞう🐘 |
また、変換テーブルについてのアクションは、以下のようなものがあります。
変換テーブルの行をレコードと言います
上記の例で
変換テーブルのアクション:レコードの取得
キー:フルーツ
というアクションを設定すると、フルーツの行の内容が出力されます。

また、
変換テーブルのアクション:レコードの更新
更新対象フィールド:変換バリュー3
更新対象レコードのキー:動物
変換バリュー3:ゴリラ🦍
というアクションを設定すると、「動物」の「変換バリュー3」が「きりん🦒」から「ゴリラ🦍」に変わります。

このように値を行単位で取得・操作できるので、変数の設定ができないサイボウズの連携コネクタにおいて、変数代わりの手段として使えそうです。
添付ファイルフィールドの値の指定方法
また、もうひとつわかったのは、添付ファイルフィールドの値の指定方法です。
複数ファイルを入れたい添付ファイルフィールドの値のには、アップロード用fileKeyのカンマ区切り文字列を入れます。
複数添付ファイルフィールドコピーの実装
これらの内容を踏まえて、アプリ間レコードコピーの連携コネクタを複数添付ファイルのコピーもできるようにしました。
各ステップにコメントを入れておくとわかりやすくなります
変換テーブルの作成
まず、変換テーブルを作成しておきます。
複数の連携コネクタで同じテーブルを使用することを考え、テーブルの行はアプリIDとレコードIDでユニークになるようにし、コピーする際に行を作っては削除するようにしておきます。
| 設定項目 | 設定値 |
|---|---|
| テーブル名 | 添付ファイルコピー用 |
| キー列名 | アプリID_レコードID |
| 変換バリュー列名 | fileKeyカンマ区切り |
5.2 変換テーブルレコードの追加
ステップ5.1の「コピー元レコード番号が一致するレコードの繰り返しの開始」の直後に、ステップ5.2 変換テーブル レコードの追加アクションを追加します。ここでは、fileKeyカンマ区切りには値の入っていない空の行を作成しています。
「アプリID_レコードID」の値に、ステップ1の app > id と レコード番号 > valueを入れます。

5.3.4 変換テーブルレコードの取得
ステップ5.3の「コピー元レコードの添付ファイルの配列についての繰り返し」の繰り返しブロック内ステップ5.3.3「添付ファイルのアップロード」の後に、ステップ5.3.4 レコードの取得アクションを追加します。ここでは、その時点の「アプリID_レコードID」の行の「fileKeyカンマ区切り」の値を取得します。

5.3.5 変換テーブルレコードの更新
その後に、ステップ5.3.5 レコードの更新アクションを追加します。
「アプリID_レコードID」の行の「fileKeyカンマ区切り」の値に、
[5.3.4 fileKeyカンマ区切り][5.3.3 fileKey],
を指定します。最後のカンマを忘れずに!
この5.3.Xの繰り返しにより、「fileKeyカンマ区切り」にすでに入っている文字列の最後に、新たなfileKeyの値とカンマが追加されていきます。
5.4 変換テーブルレコードの取得
5.3.Xの繰り返しの設定は終わりです。親ブロック5.3に戻り、ステップ5.4 レコードの取得アクションを追加します。
ここで、5.3.Xの繰り返しで設定した、「fileKeyカンマ区切り」の値を取得します。
出力確認をすると、2つのfileKeyがカンマで区切られいて、最後にもカンマが入っていることがわかります。

5.5 フィールド関数で最後のカンマを削除
変換テーブルの「fileKeyカンマ区切り」の値の最後に、余分なカンマが入っているため、「フィールド関数」で削除します。
ステップ5.5 フィールド関数を実行するを追加します。
基本設定の「式フィールド1_文字列」には、以下のように関数を設定します。
REGEXREPLACE([5.4 fileKeyカンマ区切り],",",$","")
これは、文字列の末尾を表す正規表現$の前に,を入れた,$を、空の文字列に置換することで、文字列の末尾にあるカンマだけを削除する関数です。
REGEXREPLACE(
[5.4 fileKeyカンマ区切り], ← 対象の文字列(末尾にカンマが入っている)
",$", ← 正規表現
"" ← 置換後の文字列(空文字)
)
出力確認をすると、末尾のカンマが削除されていることが確認できます。

5.6 kintoneレコードの更新
コピー先アプリの添付ファイルフィールドに入れる値が完成したので、ステップ5.6 レコードの更新の「コピー元添付ファイル」の値に、
[5.5 expression_string]
を設定します。
5.7 変換テーブルレコードの削除
ここまでで、複数添付ファイルのコピーはできるのですが、変換テーブルにレコード(=行)が残っていると、次に同じレコードの編集をした際の「変換テーブルレコードの作成」で「既に存在します」というエラーになってしまいます。
そのため、ステップ5.7 レコードの削除を追加して、最後に変換テーブルに追加したレコードを削除するようにしておきます。
まとめ
ようやく完成しました。
1つのコピー元アプリの添付ファイルフィールドに添付ファイルが1つだけでも、17ステップです。
変数を指定できたり、もっといろいろな関数が使えればもうちょっとシンプルにできるのかもしれませんが、あまり変わらなさそうです。
非常に複雑で難しかったですが、いろいろ試行錯誤したことで変換テーブルのことなどが理解できました。
教えていただいたみなさま、ありがとうございました🙏


















