レコード再利用時に異なる行数のテーブルデータ内の特定のフィールドをすべてリセットしたい

レコードを再利用した新規のレコードの編集画面の状態で、再利用元のレコードにあるサブテーブルの特定フィールド(複数行かつレコードによって行数が異なる)をすべて空の値にリセットしたいと考えています

1行の場合や行数が固定の場合はなんとか動くのですが、レコードによって変動する複数行の場合のやり方がわからず投稿させていただきました

下記のコードは1行目のみのリセットとなりますが、参考までに記載させていただきます

(function () {

 "use strict";
 kintone.events.on('app.record.create.show', function(event){
 
 if (event.reuse) {
 
     var record = event.record;
      
   record['サンプルテキスト_1行'].value = [];
   record.サンプルサブテーブル.value[0].value['テーブル行ID'].value = [];
 }
 
 return event;
 });
})();

解決方法や参考になる記事などあればご教授いだけると助かります

テーブル操作は、下記が参考になると思います。

kintone Tips テーブル

なお今回の要件は kintone 標準のアクション機能で実現可能だと思います。

  1. アクションの作成
  2. 同じアプリにコピー
  3. フィールドの関連付け すべて追加
  4. 初期化したい項目をフィールドの関連付けから削除

rex0220様

>なお今回の要件は kintone 標準のアクション機能で実現可能だと思います。
上記のアドバイスのとおり、こちらのほうが簡単に実現できますね
本当にありがとうございます、標準の機能のほうが確実なので助かります

ただせっかく?なので、kintoneもjavascriptも初心者なのですが後学のためにいただいたTipsを拝見し、実現を試みてみたいと考えています

考え方としては

forEach()を使ってループし、「更新_行番号」と同じ行を更新する

こちらのforEach()を使い、行番号を指定ではなく存在するすべての行で処理を行う、といった考えになりますでしょうか?

お手すきの際で構いませんので、アドバイスやjavascriptで処理する際の正しい書き方などもしご迷惑でなければご教授いただけると幸いです

>こちらのforEach()を使い、行番号を指定ではなく存在するすべての行で処理を行う、といった考えになりますでしょうか?

はい、まずは試してみましょう。

もし間違えてもそれらが経験になります。

 

ありがとうございます
実際に試してみました

悪戦苦闘した結果お陰様でなんとか無事動くところまでは持っていけました

参考を修正しただけで、文法はもちろんrowという値?がkintone固有なのかそうじゃないのか?など、初心者すぎるレベルでまだ応用できるほど十分に理解はできてませんが、簡単なカスタムができるよう色々試してみたいと思います

(function () {

 "use strict";
 kintone.events.on('app.record.create.show', function(event){
 
 if (event.reuse) {
 
     var record = event.record;
      
   record['サンプルテキスト_1行'].value = [];
   record.サンプルサブテーブル.value.forEach((row) => {
      row.value.テーブル行ID.value = [];
     });
   
 }
 
 return event;
 });
})();

ありがとうございました

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