一覧画面に作成・配置したボタン押下後のフィールド値更新処理

いつも参考にさせていただいており、大変助かっております。
今回はお知恵を拝借させていただきたく、投稿いたします。

現在、
『レコード一覧画面にボタンを配置し、
クリックするとレコード内容から複数の値を条件にして別アプリから値を取り出し、
自分のアプリの特定フィールドに値を入れる』
という処理を作りたいと思っております。

つきましては、まずは『ボタンを押して全レコードを更新する』
ところから作ってみようと思い、下記のJSを作成しましたが、
思うように動きません。

<アプリのフィールド名、型>
・コード:文字列(1行)
・文字列:文字列(1行)
・文字列連結:文字列(1行) ←ボタンを押下して「コード」と「文字列」を連結した文字列を入れる対象のフィールド

(function() {
"use strict";

// 一覧表示時処理
kintone.events.on('app.record.index.show', function(event) {
var record = event.record;
var appId = kintone.app.getId();

// ボタン増殖防止
if (document.getElementById('ボタン1') !== null) {
return;
}
// ボタンの作成
var 更新ボタン = document.createElement('button');
更新ボタン.id = 'ボタン1';
更新ボタン.innerHTML = '更新';
更新ボタン.onclick = function() { // ボタンクリック時の処理
alert('更新ボタンクリック');
var params = {
"app": appId,
"records": []
};
for (var i = 0; i < record['records'].length; i++) {
params['records'][i] = {
"id": record['records'][i]['レコード番号']['value'],
"record": {
"文字列連結": { "value": record['コード']['value'] + ":" + record['文字列']['value'] }
}
};
params.records.push(record);
}
kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', params).then(function(resp) {
// 成功時
alert("更新成功");
}, function(resp) {
// 失敗時
alert("更新失敗");
});
};
kintone.app.getHeaderSpaceElement().appendChild(更新ボタン); // ボタン表示
});

})();

ボタンの表示、クリックまでは動作するのですが、更新処理の方に入らないようです。
大変恐れ入りますが、ご教示お願いできますでしょうか。

藤原さん
Cstapの瀧ヶ平です。

  1. var record = event.record; は一覧画面では存在しないので、event.recordsを使う必要があります。また、それに合わせて変数名を修正することをおすすめします(record => records に修正)
  2. 23行目のidの代入ですが、“レコード番号"ではなく”$id"を利用するべきです。(レコード番号はアプリコードとレコードIDを組み合わせたユニークな値になります)
  3. 30行目のparams.records.push(record); は全く必要のない処理のように見えます。削除した方が良いかと思います。

以上の3つのような問題点が見受けられるため、修正して再度試してみてください。
参考になりますでしょうか

瀧ヶ平様

迅速にご回答いただき、ありがとうございます。
下記のコードにて無事解決できましたので、報告させていただきます。

(function() {
"use strict";

// 一覧表示時処理
kintone.events.on('app.record.index.show', function(event) {
var records = event.records;
var appId = kintone.app.getId();

// ボタン増殖防止
if (document.getElementById('ボタン1') !== null) {
return;
}
// ボタンの作成
var 更新ボタン = document.createElement('button');
更新ボタン.id = 'ボタン1';
更新ボタン.innerHTML = '更新';
更新ボタン.onclick = function() { // ボタンクリック時の処理
alert('更新ボタンクリック');
var params = {
"app": appId,
"records": []
};
for (var i = 0; i < records.length; i++) {
params['records'][i] = {
"id": records[i]['$id']['value'],
"record": {
"文字列連結": {
"value": records[i]['コード']['value'] + ":" + records[i]['文字列']['value']
}
}
};
}
kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', params).then(function(resp) {
// 成功時
alert("更新成功");
location.reload(); // 成功したら画面を更新
}, function(resp) {
// 失敗時
alert("更新失敗");
});
};
kintone.app.getHeaderSpaceElement().appendChild(更新ボタン); // ボタン表示
});

})();

大変参考になり、助かりました。
重ねてお礼申し上げます。