ボタンで決まったサブテーブルを追加したい

初心者です。
この2つのコードを組み合わせれば実現できそうな気がしているのですが、組み合わせることはできますでしょうか。

(function() {
'use strict';

kintone.events.on('app.record.create.show', function(event) {

var newRow1 = createValue_('食費','20000', '備考1');
var newRow2 = createValue_('光熱費','15000', '備考2');

event.record.家計.value = [
newRow1,
newRow2
];
return event;
});

function createValue_(textA, number, text) {
return {
'value': {
'金額': {
'type': 'NUMBER',
'value': number
},


'備考': {
'type': 'SINGLE_LINE_TEXT',
'value': text
},

'費目': {
'type': 'DROP_DOWN',
'value': textA
}


}
};
}
})();


const addSpace = kintone.app.record.getSpaceElement('addSpace');
const addButton = document.createElement('button');
addButton.innerHTML = '追加';
addButton.onclick = addRow;
addSpace.appendChild(addButton);

この2つです。

的外れだったらすみません。

たくさんの人の家計を入力するアプリがあるのですが

食費
光熱費
通信費
住宅ローン
保険料
・・・・・・・・・

と項目がおおいのですが毎回プラスボタンをおして
追加して家計を登録しています。

今の状態だと初期表示でしか作動しないようで、

このアプリは他のアプリからプラグインを使って自動作成されるレコードのため、初期表示を飛ばしているので動作しません。

そのため、あとからの編集レコード画面で、「追加」などのポタンで初期セットを表示できたらよいと考えたのですが
JSの基礎も知らないため、どうにもなりませんでした。

もしよろしければお助けいただきたいです。

 

ianemarikaさん

こんにちは。下記はいかがでしょうか。

// レコード追加画面表示時
kintone.events.on('app.record.create.show', function(event) {

 const addSpace = kintone.app.record.getSpaceElement('addSpace');
 const addButton = document.createElement('button');
 addButton.innerHTML = '追加';

 // クリック時
 addButton.onclick = function() {
  if (window.confirm('テーブルを上書き更新します。よろしいですか?')) {
   var myRecord = kintone.app.record.get();
   var newRow1 = createValue_('食費', '20000', '備考1');
   var newRow2 = createValue_('光熱費', '15000', '備考2');
   myRecord.record.家計.value = [
    newRow1,
    newRow2
   ];
   kintone.app.record.set(myRecord);
  }
 };

 addSpace.appendChild(addButton);

 return event;

});

テーブルが上書きされるため、ボタンクリック時に確認メッセージ(window.confirm)を出すようにしています。

koichi様

できました!!非常に助かりました。

確認メッセージ(window.confirm)も仕様にピッタリで大変うれしいです。

頂いたコードをよく確認して、今度は自分で繋げられるよう頑張ってみたいと思います。

ianemarika様

ご確認ありがとうございます。ご要望に添えて良かったです!

自作ボタンは、結構使う場面が多いと思いますので、ぜひマスターしてみてください。

新規レコード作成では ボタンを表示させることができ、また正常に動作するのですが

編集レコード画面では、ボタン自体が表示されず、動作させることができないのですがなにか原因はありますでしょうか。

何度も聞いてしまい申し訳有りません。

上記例の文頭を修正して、レコード編集時のイベント(app.record.edit.show)を追加してみてください。

kintone.events.on(['app.record.create.show', 'app.record.edit.show'],function(event) {

 

もし、追加画面と編集画面で処理が一部異なる場合は、それぞれに分けることをおすすめします。

// レコード追加画面表示時
kintone.events.on('app.record.create.show',function(event) {
 処理を記述
});

 

// レコード編集画面表示時
kintone.events.on('app.record.edit.show',function(event) {
 処理を記述
});

 

何度もありがとうございます。

やりたかったことが完璧にできました。
ずっと悩んでいたので感動しました。

とてもわかりやすいです。
このコードでそれぞれのイベントを指定していたのですね。

すごく勉強になりました。

koichi様本当にありがとうございます。

解決されて良かったです。

他にもkintoneのイベントは色々ありますので、下記もご参照ください。

https://developer.cybozu.io/hc/ja/articles/202738940

koichi様

リンクありがとうございます。
お陰様でイベントを使い分けることができるようになりました!!

大変わかりやすく解説していただきありがとうございました。