TS44
2024 年 2 月 7 日午前 2:10
1
下記コードで、「const record = kintone.app.record.get();」を実行すると、
【You cannot call kintone.app.record.get() in handler or during processing a handler.】が発生するのですが、どこを修正すればよいのでしょうか?
function TableInsertRow() {
const record = kintone.app.record.get();
var TableB = record['担当ユーザー'].value; // valueプロパティが取得できずエラー!
if(Com_SearchList.length !== 0) {
for(var i = 0; i < Com_SearchList[0].length; i++) {
TableB.push({
value: {
"住所1": {value: Com_SearchList[0][i].住所結合, type: "SINGLE_LINE_TEXT"},
"所属": {value: "", type: "SINGLE_LINE_TEXT"},
"役職": {value: "", type: "SINGLE_LINE_TEXT"},
"氏名": {value: "", type: "SINGLE_LINE_TEXT"}
}
});
}
kintone.app.record.set({record: record});
}
}
TS44
2024 年 2 月 8 日午前 1:06
3
現状、下記のコードとなっています。
(function($) {
"use strict";
var events = ['app.record.detail.show', 'app.record.index.show', 'app.record.edit.show']
let UserAppID = xxx;
let kUserData = [];
let Com_SearchList = []; //検索結果のデータ
let Name;
kintone.events.on(events, function(event) {
var record = event.record;
GetUserData();
Search();
TableInsertRow();
return event;
});
function GetUserData()
{
**********
}
function Search()
{
**********
}
function TableInsertRow() {
const record = kintone.app.record.get();
var TableB = record['担当ユーザー'].value;
if(Com_SearchList.length !== 0) {
for(var i = 0; i < Com_SearchList[0].length; i++) {
TableB.push({
value: {
"住所1": {value: "", type: "SINGLE_LINE_TEXT"},
"所属": {value: "", type: "SINGLE_LINE_TEXT"},
"役職": {value: "", type: "SINGLE_LINE_TEXT"},
"氏名": {value: "", type: "SINGLE_LINE_TEXT"}
}
});
}
kintone.app.record.set({record: record});
}
}
})(jQuery);
pomo
2024 年 2 月 8 日午前 2:03
4
レコード詳細と編集で発生しているということですね。
kintone.app.record.get/setはハンドラー内で使うものでないので、
イベントのレコードを渡して、返してあげてください。
シンプルな形だと、
(function () {
"use strict";
var events = ['app.record.detail.show', 'app.record.edit.show']
kintone.events.on(events, function (event) {
var record = event.record;
TableInsertRow(record);
return event;
});
function TableInsertRow(record) {
const target = record['担当ユーザー'].value
console.log(target)
return record
}
})();
あと一覧だとevent.recordsに配列でレコード群取り出せるので、event内容みて処理分岐させるか、一覧は一覧で包んで処理してあげた方がいいかも知れませんね。
※画面にボタン追加して、押下した時にレコード取得/更新したい等の時にkintone.record.app.get/set使うイメージ
TS44
2024 年 2 月 8 日午前 3:11
5
ご回答誠にありがとうございます。
下記のように、pushしsetするとエラーが発生するのですが、このコードでは不可能なのでしょうか?※初歩的な質問で、申し訳ありません。
(function () {
"use strict";
var events = ['app.record.detail.show', 'app.record.edit.show']
kintone.events.on(events, function (event) {
var record = event.record;
TableInsertRow(record);
return event;
});
function TableInsertRow(record) {
var TableB = record['担当ユーザー'].value;
if(Com_SearchList.length !== 0) {
for(var i = 0; i < Com_SearchList[0].length; i++) {
TableB.push({
value: {
"住所1": {value:"", type: "SINGLE_LINE_TEXT"},
"所属": {value: "", type: "SINGLE_LINE_TEXT"},
"役職": {value: "", type: "SINGLE_LINE_TEXT"},
"氏名": {value: "", type: "SINGLE_LINE_TEXT"}
}
});
}
record.set({record: record});
}
})();
pomo
2024 年 2 月 8 日午前 3:40
6
イベント内で実行してるので、kintone.app.record.setは使わないでください。
return recordで返してあげてください。
で、すみません見落としてたんですが、レコード詳細で書き換えはできないので編集画面に限定して実行してあげてください。詳細で強制的に書き換えたい場合はボタン等設置してRESTAPIを使って更新してあげてください。
(function () {
"use strict";
var events = ['app.record.edit.show']
kintone.events.on(events, function (event) {
var record = event.record;
TableInsertRow(record);
return event;
});
function TableInsertRow(record) {
var TableB = record['担当ユーザー'].value;
if (Com_SearchList.length !== 0) {
for (var i = 0; i < Com_SearchList[0].length; i++) {
TableB.push({
value: {
"住所1": { value: "", type: "SINGLE_LINE_TEXT" },
"所属": { value: "", type: "SINGLE_LINE_TEXT" },
"役職": { value: "", type: "SINGLE_LINE_TEXT" },
"氏名": { value: "", type: "SINGLE_LINE_TEXT" }
}
});
}
}
return record
}) ();
TS44
2024 年 2 月 8 日午前 9:04
7
pomo 様
ご回答誠に、ありがとうございます。
勉強不足で、大変申し訳ないのですが、
ボタンを設置してRESTAPIを使って更新する方法を、ご教示いただけないでしょうか。
pomo
2024 年 2 月 8 日午前 9:45
8
更新については以前やっていらっしゃると思うので、後はスペースフィールドなり追加して、そこにボタン生成し、下記のように更新処理をかけてみてください。
ボタン押下でのテーブルデータ追加