Handsontable 値の自動入力について

お世話になっております。

 

掲題の件、「Handsontableを使ってkintoneをExcelライクに入力しよう その2」

(https://cybozudev.zendesk.com/hc/ja/articles/207331836)を参考に、%E3%82%92%E5%8F%82%E8%80%83%E3%81%AB%E3%80%81)

Handsontableの実装を試みております。

 

上記URLより、例えば「会社名」を入力すると「ユーザー数」に自動で「200」という値を入力したい時は、

どのように指定するべきなのでしょうか?

=====================================================-

// kintoneのレコードを更新、追加する
saveRecords(this.getSourceData(), change,
function(resp){

 

**********************:以下を追加**********************:
if (source===‘edit’){
if (change[0][1]===‘会社名.value’){
change[0][0][‘ユーザー数.value’] = “200”;
}
}

***********************************************************:

console.dir(resp);

getRecords(function(resp){
// 更新後、データを再読み込み
self.loadData(resp.records);
},
function(resp){
// レコード取得失敗時に呼び出される
console.dir(resp);
});
},
function(resp){
// 更新・追加時に呼び出される
console.dir(resp);
}
);

=====================================================-

上記のように指定しても、行番号が間違えている旨のエラーメッセージが出力されます。

 

アドバイスなどいただければ幸いです。

あくまで、下記のchangeに入ってくるデータは、変更されたデータ情報ですので、下記のような方法では他のデータを変更することはできません。

if (source==='edit'){
if (change[0][1]==='会社名.value'){
change[0][0]['ユーザー数.value'] = "200";
}
}

データを変更するには、handsontableに渡しているrecords配列を直接変更すればOKです。
参考にされているTipsの saveRecords 関数で、直接recordsを変更してみてください。

: 中略
// 変更があった行から、レコード追加か変更かを判断し、クエリをつくる
for(i = 0; i < changedRows.length; i++) {
if (records[changedRows[i]]["レコード番号"].value === null) {
insertRecords.push(
setParams(records[changedRows[i]])
);
} else {
records[changedRows[i]]["ユーザー数"].value = "200"; // ←ユーザー数を強制的に200に
updateRecords.push({
id: records[changedRows[i]]["レコード番号"].value,
record: setParams(records[changedRows[i]])
});
}
}

※上記はあくまで変更のあった行のユーザー数を200にする、というところまでなので、会社名が変更された場合は、などの条件分岐は適宜カスタマイズしてください。

村濱一樹 様

 

詳しくご説明いただきありがとうございます。

 

教えていただいたところにコードを入力したところ、

会社名を入れたタイミングでユーザー数が自動入力されました。

 

コードを書く場所だけではなく、書き方も間違えておりお恥ずかしい限りですが、

おかげさまで想定通りの動作となりました。

 

ありがとうございます。