お世話になっております。
先週からKintonを利用、併せてjscriptも勉強し始めましたが、
次の動作がうまくいかず質問させていただきます。
■希望動作
一覧画面に設置した「更新」ボタンをクリックで、
空の日付フィールド「本日日付」に更新ボタンクリック時のシステム日付を入力する
チュートリアルを参考に下記コードを作成してみたのですが、レコードが更新されずどこをどう直していいのかわからない状況です。
(function() {
'use strict';
// レコード一覧の表示後イベント
kintone.events.on('app.record.index.show', function(event) {
// 増殖バグを防ぐ
if (document.getElementById('updata_button') !== null) {
return;
}
// ボタン
var UpdataButton = document.createElement('button');
UpdataButton.id = 'updata_button';
UpdataButton.innerText = '更新';
// ボタンクリック時の処理
UpdataButton.onclick = function() {
var date = luxon.DateTime.local();
var records = event.records;
// 取得レコードループ
for (var i = 0; i < records.length; i++) {
var record = records[i];
// システム日付入力
record.本日日付.value = date.toFormat('yyyy-MM-dd');
console.log(record.本日日付.value);
}};
// メニューの右側の空白部分にボタンを設置
kintone.app.getHeaderMenuSpaceElement().appendChild(UpdataButton);
return event;
});
})();
jscript初心者で基本的な部分もわかっておらず大変恐縮なのですが、ご教示いただけますと幸いです。
何卒宜しくお願い致します。
一覧画面のイベントオブジェクト(event)へ変更を実施して、returnしても
データの反映は行われません。
代わりにkintone.apiでデータを更新する必要があります。
forのループ内で更新用のオブジェクト(データの形)を作り、
最終的に更新をかける流れになります。
注意として、一覧イベントで取得できるrecordsは
表示中のレコードとなるため、最大100件になります。
該当レコードをすべて更新するには、まず、取得するapiも実行する必要があります。
(function() {
'use strict';
// レコード一覧の表示後イベント
kintone.events.on('app.record.index.show', function(event) {
// 増殖バグを防ぐ
if (document.getElementById('updata_button') !== null) {
return;
}
// ボタン
var UpdataButton = document.createElement('button');
UpdataButton.id = 'updata_button';
UpdataButton.innerText = '更新';
// メニューの右側の空白部分にボタンを設置
kintone.app.getHeaderMenuSpaceElement().appendChild(UpdataButton);
//更新用のデータを入れる配列を用意
var requestArray = [];
// ボタンクリック時の処理
UpdataButton.onclick = function() {
var date = luxon.DateTime.local();
var records = event.records;
// 取得レコードループ
for (var i = 0; i < records.length; i++) {
var record = records[i];
//レコード更新用のオブジェクトを配列の最後尾に格納
requestArray.push({
id: record.$id.value,
record: {
'本日日付': {
value: date.toFormat('yyyy-MM-dd')
}
}
});
}
var body = {
app: kintone.app.getId(),
records: requestArray
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', body, function(resp) {
console.log(resp);
window.alert('更新成功');
//画面更新
location.reload();
}, function(eror) {
console.log(error);
});
};
});
})();
岡崎様
ありがとうございます。
いただいたソースのままではうまくいかなかったのでこれからまた試行錯誤が必要ですが、書き方はなんとなく理解できましたのでこちらを参考にカスタマイズ進めていきたいと思います。
また行き詰りましたら投稿させていただきます。
宜しくお願い致します。