背景・実現したいこと
①レコード一覧画面にボタンを設置
②一覧画面で条件を絞り込み、該当のレコードを表示させて、ボタンをクリックすると下記2つの処理がその該当レコードすべてに行われる
A. チェックボックス『確認フラグ』の『確認済』にチェックが入る
B. 日付フィールド『確認日』にボタンをチェックした日付が入る
③上記の状態で該当レコードすべてを更新
エラー情報 (開発者ツールのコンソール)
初心者のため、やりたいことを検索し、必要な部分をつぎはぎしながら作りました。
直す度にエラーが出るか、動かないかで、現在は下記のコードになりました。
このコードの状態でのエラーは「不正なJSON文字列です」と出ています。
おかしなところだらけかもしれませんが、ご教授いただけますと幸いです。
利用したソースコード
(function() {
“use strict”;
/*
レコード一覧画面の表示後イベント
*/
kintone.events.on([‘app.record.index.show’], function(event) {
var appId = kintone.app.getId(); //アプリIdの取得
if (event.viewName == “一覧”) {
var currentQuery = kintone.app.getQueryCondition(); //現在の検索クエリ
if (document.getElementById(‘my_index_button’) !== null) {
return;
}
var myIndexButton = document.createElement(‘button’);
myIndexButton.id = ‘confirm’;
myIndexButton.innerText = ‘現在表示されているレコードすべてを確認済みにする’;
myIndexButton.addEventListener(‘click’, toConfirm);
function toConfirm() {
kintoneUtility.rest.getAllRecordsByQuery({
app: appId,
query: currentQuery
}).then(function(resp) {
var records = resp.records;
var length = records.length;
var putRecords = [];
var presentDate = moment().format(‘YYYY-MM-DD’);
for (var i = 0; i < length; i++) {
putRecords.push({
“id”: records[i][‘レコード番号’].value,
“record”: {
“確認フラグ”: [
‘確認済’,
],
“確認日”: {
value: presentDate.value,
},
}
});
}
if (confirm(‘本当に本日付で’ + length + ‘件を確認済みにしますか?’)) {
kintoneUtility.rest.putRecords({
app: appId,
records: putRecords,
}).then(function(response) {
alert(“レコードを更新しました。”);
console.log(response);
}).catch(function(error) {
console.log(error);
});
}
});
}
// メニュー右側の空白部分にボタンを設置
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
// メニュー下部分にボタンを設置
//kintone.app.getHeaderSpaceElement().appendChild(myIndexButton);
}
return event;
});
})();