サブテーブルのデータを更新した際に同期している別アプリにレコードを削除して登録しなおしたい

下記の記事を参考にAアプリにあるサブテーブルのデータをBアプリにレコード登録することができました。(以下のコードです)

https://developer.cybozu.io/hc/ja/community/posts/360047876532-%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%88%A5%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E7%99%BB%E9%8C%B2%E3%81%97%E3%81%9F%E3%81%84-

(function () {
"use strict";
'app.record.create.submit.success'
], function (event) {
var postApp = '33'; //BアプリのID
var subTable = '工事工程管理'; //サブテーブルのフィールドコード
var headers = [ //コピーするサブテーブル外のフィールドのフィールドコード
'現場名',
'現場備考',
'監督氏名',
'監督電話'
];

kintone.api(kintone.api.url('/k/v1/records', true), 'POST', {
app: postApp,
records: event.record[subTable].value.map(function (row) {
headers.forEach(function (header) {
row.value[header] = event.record[header];
});
return row.value;
})
});
});
})();

 

ここで表題の通り、Aアプリ更新時にBアプリも更新したいのですが、以下の仕様で更新したいと考えています。

  1. Aアプリを更新
  2. Aアプリに入力されている「現場名」(一意制約あり)とBアプリの「現場名」でBアプリのレコードID(複数)をGET
  3. 2で取得したIDをもとにBアプリの該当レコードを削除
  4. BアプリにAアプリのサブテーブルのデータをレコード登録

更新ではなく削除→登録にしたい理由は、Aアプリのサブテーブルの行が更新時に削除されることがあり、過去スレッドにあるような更新ではAアプリで削除されたサブテーブルのデータが残ってしまうからです。

上記の記事のようにユニーク番号を使った更新の記事はあるのですが、削除→登録の記事は見つけられませんでした。

同じようなことをしている方のスレッドにあるサンプルコードを参考に編集しているだけのプログラミングド素人で、サンプルコード付きで助けていただきたいです。

お手数をおかけしますがよろしくお願いします。

こんにちは!

サブテーブルから別アプリのレコード操作するのは「沼」ですね:eyes::sweat_drops::sweat_drops:

対策はされているかも知れませんが、アプリB側から更新、登録、削除などを個別にされてしまった場合に、アプリA側も何らかの登録や更新が必要ではないでしょうか?作っていくと、どんどん沼化すると思います。

>同じようなことをしている方のスレッドにあるサンプルコードを参考に編集しているだけのプログラミングド素人で、サンプルコード付きで助けていただきたいです。

とのことで、失礼を承知で書かせていただきますが、
サンプルコードで動かせる、公式外のサンプルコードがないと動かせないというレベル感での
「削除」が絡むカスタマイズは(特に)とても危険だと思います。(履歴が残る設定にしていたとしてもです)
ホントに失礼でスミマセンm(_ _)m​:sweat_drops::sweat_drops:

というわけで、サンプルコードはココには書けないのですが、
GoogleやQiitaで「kintone テーブル 別アプリ レコード 削除」などのキーワードで検索してみてください。
根気よく探すとサンプルコードの記事にたどり着くと思います。
そこで見つけた記事に解説が必要な場合は申し訳ないのですが、
サイボウズさんのパートナーさんなどのカスタマイズできる方にお願いしたほうがいいかなと思います(><)

または、できるかどうかはわからないのですが、プラグインを探してみるとか、カスタマイン等の連携サービスを使ってみるとかおすすめしたいですm(_ _)m

juridon様

コメントありがとうございます。

前提条件を記載していませんでした。

Aアプリは登録、更新をして(案件自体の削除はありません)、Bアプリは閲覧のみです。

具体的に言うと、Aアプリは工事案件を物件単位で管理しています。1つの物件(案件)に対して、複数の工事工程があるので、それをサブテーブルで管理しています。サブテーブルでは工事の日付、担当者、工事内容、備考等を管理しています。

BアプリはAアプリのサブテーブルで管理している工事工程を、案件というしばりをなくして、レコード化して日付順の一覧表示にしようと考えています。

Bアプリを作ることで、一覧画面でのカレンダー表示に対応ができたり、工事内容の担当者の絞りを入れれたり(Aアプリでは案件単位で管理しているため工事内容単位で絞りを入れることはできません)、リマインダーに対応できたりできると考えています。

 

ですのであくまで管理用ではなく閲覧用であり、Bアプリから登録、更新することはないという前提です。