サブテーブルのchangeイベントが発生した行数(行番号)を知りたい

何を実現したいのかを書きましょう

サブテーブルに部門を表示するドロップダウンがあり
ドロップダウンの選択によって、その部門の承認者を表示させたいです。
別途部門アプリがありまして、ドロップダウンの選択によって
部門アプリから承認者の値を取得することはできるのですが
changeイベントが発生したサブテーブルの行数の取得方法が分からないので
承認者をセットできません。
※1行目・2行目と行数を指定すればできる
サブテーブルのchangeイベントが発生した行数(行番号)を取得する方法を
教えてもらえないでしょうか。

発生した問題やエラーメッセージを具体的に書きましょう

kintone.events.on('app.record.create.change.部門', (event) => {
  const row = event.changes.row;
  const field = event.changes.field;
  console.log(row)
  return event;
});

上記のコンソールを見てのnullで行数が分かりません

実行したコードをコピー&ペーストしましょう

(function () {
‘use strict’;

kintone.events.on(
[‘app.record.create.change.部門’, ‘app.record.edit.change.部門’],
function (event) {
var changes = event.changes;
if (changes[‘row’].value[‘部門’].value) {
setBoss(event);
return event;
}
}
);
})();

//これで1行目ならできる
const setBoss = async (event) => {
var changes = event.changes;
const body = {
app: 80,
query: ‘部門名 = "’ + changes[‘row’].value[‘部門’].value + ‘"’,
fields: [‘承認者1’],
};

try {
const resp = await kintone.api(
kintone.api.url(‘/k/v1/records’, true),
‘GET’,
body
);
console.log(resp.records[0][‘承認者1’].value);

const setRecord = kintone.app.record.get();
setRecord.record['明細'].value[0].value['承認者1'].value =
  resp.records[0]['承認者1'].value;
setRecord.record['明細'].value[0].value['承認者1'].value.lookup = true;
kintone.app.record.set(setRecord);

} catch (error) {
// error
console.log(error);
}
};

上記のように行を指定(1行目、2行目と)すればできます

質問内容をうまく読み取れていないです。

レコード追加画面でフィールドの値を変更したときのイベント - cybozu developer network

指定できる項目に
テーブルは含まれていますが、取得できるのは行の追加・削除だけとあります。

ただ、どこかでこの制限を回避している例を見かけたような気がします。

にあるように、
event.changes.row;
とテーブルの各行を比較して、何個目かを数える形のようです。

aaa様

ご指摘ありがとうございます。
この方法を試すと、上から順番に入力した場合はうまくできるのですが
1行飛ばして入力した時など、特定の時に本来表示されて欲しい
承認者が表示されません。

たぶん、変更対象の行を除外するサンプルなので上手くいかないと思うのですが

event.record.テーブル.value = event.record.テーブル.value.filter((row) => row === event.changes.row);
としてみても理想の動きになりません。

考え方を誤っている部分をご指摘いただけると幸いです。

リンク先の内容は、変更行以外を求めるものでした。

今ほしいのは、テーブルでどの行が一致するかを知りたいので
たとえば、以下のように簡略した場合

const changerow = "c"
const tableRows = ["a", "b", "c", "d"]

console.log(tableRows.indexOf(changerow))
2

と表示されます。

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