サブテーブルの追加行を特定したい

サブテーブルに追加できる最大行数を設定し、それを超えたら行追加をキャンセル(追加行を削除)しようと考え下記のようなコードを記述しました。

  kintone.events.on(
  ["app.record.edit.change.テーブル", "app.record.create.change.テーブル"],
  (event) => {
    const limit = 20; // 最大行数
    const table = event.record.テーブル.value;
    const tableLength = table.length;

      if (tableLength > limit) {
       table.pop(); // ★ここで最終行を削除
      alert("最大行数(" + limit + "行)に達しました。");
    }

      return event;
  }
);

しかし、このコードでは必ず最終行が削除されてしまう為、サブテーブルの途中に行追加をして最大行数をオーバーした場合でも、最終行が消えてしまいます。

 

追加しようとした行を削除する為、その行を特定することはできますでしょうか。

もしくは、行追加処理自体をキャンセルする方法はありますでしょうか。

北原 仁 さん

change.{フィールド名} イベントでは、引数の event に event.changes.row というパラメータが付与されるのでそれを使用して変更のあった行を特定できます。

変更対象の行を除外するサンプルです。

event.record.テーブル.value = event.record.テーブル.value.filter((row) => row !== event.changes.row);

以上になります。参考になれば幸いです。

川村さん

ありがとうございます!event.changes.rowという取り方があったのですね。
おかげさまで要件通りの実装ができました。本当にありがとうございます。

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