サブテーブルの行追加時に、別アプリにレコード登録をしたい。

今月からKintoneの導入を検討しています。
コーディングについて調べつつ行っていたのですが、煮詰まってしまったため質問させていただきます。

別のシステムより、Aアプリに取引先ごとのレコード情報をインポートします。
インポートした情報により、サブテーブルが自動作成されます。
作成されたサブテーブルに、ユーザーが手動でテーブル行を追加します。

実現したい事

ユーザーがサブテーブルに行を追加した際に、Bアプリに追加レコードが新規作成される仕組みを作りたいです。

発生した問題

下記コードにて実装したのですが、ユーザーが作成した行だけではなく、インポート時に取得した行までレコード作成されてしまいました。
一覧でフィルターをかければ使用できますが、作成した行のみで制御したいです。

(フィルターをかける方法まではいきつけたのですが、記述する箇所を調整しても正しく動作しません。)

また、レコードを更新するたびに同様のレコードが新規作成されるので、こちらも制御する方法があれば実装したいと考えております。

改善案や他の対策等、ありましたら、ご教示願いたいです。
よろしくお願いいたします。

実行したコード


(() => {
	'use strict';

	kintone.events.on('app.record.edit.submit.success', (event) => {
	  const postApp = 30; 
	  const subTable = 'T_検品書明細'; 
	  const headers = ['SF取引先番号']; 

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


//条件を付けて一致するテーブル行のみ取得
//event.record.T_検品書明細.value.filter((row) => {
//return row.value.一括買取品番号.value !== '';

僕がやりたいことを完全に理解してるわけではないのですが、思ったこととしては、

  • サブテーブルの行と、Bアプリに紐づけのためのIDを作成し、毎回突き合わせて、BアプリにIDが一致するレコードがあればアップデート、なければ作成(いわゆるアップサート)をするのはどうでしょうか?
    kintone rest api clientを使うとUpsertは比較的ラクにやれるかとおもいます
  • 上記突き合わせとか必要なく、レコード作成時だけの挙動としてやりたい、ということであれば app.record.create.submitapp.record.create.submit.success でどうでしょうか。
    • また、app.record.submit.success はBアプリへのレコード作成が失敗しても動いてしまうので、保存直前のイベントである app.record.create.submit の方がいいのかな?とも思いました。
「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。