前回わけのわからない投稿をしてしまいましたので、再度投稿させて頂きます。
サブテーブルに対して、指定した行の下に行を挿入し、そこに各フィールドに入力している項目を移動させています。
例) 対象行番号「1」フィールドA「たちつ」 フィールドB「てと」を挿入する
【サブテーブル】
1 あいうえお かきく
2 けこ さしすせそ
↓↓行の挿入をボタンで実行後↓↓
【サブテーブル】
1 あいうえお かきく
1 たちつ てと ← ここに挿入される ※これが問題
2 けこ さしすせそ
挿入されて値がセットされるまでは良かったのですが、行の番号の更新ができずに困っています。
下記のスクリプトを使用しておりますが、エラーも出ておりません。
ご教授の程、よろしくお願いします。
(function() {
“use strict”;
kintone.events.on([“app.record.detai.show”, “app.record.edit.show”], function(e) {
// 追加ボタンを設置
const editSpace = kintone.app.record.getSpaceElement(‘editSpace’);
const editButton = document.createElement(‘button’);
editButton.innerHTML = ‘指定行下へ追加’;
editButton.onclick = editRow;
editSpace.appendChild(editButton);
});
// 行追加関数
function editRow() {
const obj = kintone.app.record.get();
const tb = obj.record.一覧.value;
const eText2 = obj.record.追加変更_カテゴリ.value;
const eText4 = obj.record.追加変更_数量.value;
const eText5 = obj.record.追加変更_備考.value;
const newRow={//空っぽの行
id:null,
value:{
“カテゴリ”: {“type”: “SINGLE_LINE_TEXT”, “value”: eText2},
“数量”: {“type”: “NUMBER”, “value”: eText4},
“備考”: {“type”: “SINGLE_LINE_TEXT”, “value”: eText5}
}
}
tb.splice(Number(obj.record.対象行番号.value), 0, newRow);
kintone.app.record.set(obj);
};
// 行番号更新関数
function resetRowNo(record) {
record.一覧.value.forEach(function(row, i) {
row.value.行番号.value = i + 1;
});
}
})();
こもるーさん
こんにちは!
ざっくり読んだ感じですと、
↓ここの対象行番号は0始まりにしないといけません。
tb.splice(Number(obj.record.対象行番号.value), 0, newRow);
(0番目が1行目なので、1が入ったら2行目に挿入されると思います。)
1行目に挿入したい時に対象行番号に「1」が入った状態でボタンを押すということでしたら、
tb.splice(Number(obj.record.対象行番号.value) - 1, 0, newRow);
などゴリ押しするとか思いついたのですがいかがでしょうか!?
juridonさん
こんにちは!いつもありがとうございます!
そうかゴリ押しすればいいのか、と思いましたが、
なんだか「// 行番号更新関数」からが動かなくて、行番号の更新ができないんです。
はじめはsubmitで保存時に行番号を振りなおせばいいのではとも思ったのですが、
↑のスクリプトにはサブテーブルの一番下に項目を追加するスクリプトと、指定した行番号の項目を変更するスクリプト等があり、
都度、行番号を指定して何かを行う都合があるため、それはできないので、サブテーブルに追加をした瞬間に行がリセットされる、という処理にしたいです。
なので、行番号更新をこの動作の間に必ず走らせたいのですが、動いてくれなくて。。。
ちょっと違うアプリになってしまいますが、こんな感じになってます。→
こもるーさん
そうだったんですね(><)悩ましいですね!
それでしたら、もしかするとなんですが、
行番号更新の
function resetRowNo(record)
呼ばれてないような?(゜-゜)
呼ぶとしたら
tb.splice(Number(obj.record.対象行番号.value), 0, newRow);
kintone.app.record.set(obj);
の間でしょうか??(゜-゜)
!?!?
juridonさん
前のスクリプトが呼ばれてないと思って色々変えてみたのですが、
今回のスクリプトでも呼ばれていなかったのですね^^;
アドバイス通りにしてみたつもりなのですが、それでも動かないみたいで。。
tb.splice(Number(obj.record.対象行番号.value), 0, newRow);
function resetRowNo(record) {
record.一覧.value.forEach(function(row, i) {
row.value.行番号.value = i + 1;
});
}
kintone.app.record.set(obj);
}
})();
↑こうしてみる、の理解で合ってます??
こもるーさん
なるほどです!
function resetRowNo(record)
は、関数の定義をしているところなので、この書き方だと動かないのです(><)
tb.splice(Number(obj.record.対象行番号.value), 0, newRow);
resetRowNo(obj.record);
kintone.app.record.set(obj);
多分こんな感じかなぁとおもいます(><)間違ってたらスミマセン
juridonさん
できましたー!
書き方壊滅的なところを改善してくださってありがとうございました^^
下記スクリプトで行けました。
tb.splice(Number(obj.record.対象行番号.value) , 0, newRow);
resetRowNo(obj.record);
function resetRowNo(record) {
record.一覧.value.forEach(function(row, i) {
row.value.行番号.value = i + 1;
});
}
kintone.app.record.set(obj);
前回もなのですが、いつもとても早いご回答とても助かります。
ありがとうございます。
引っ掛かったところなどは、ダメだったスクリプトを印刷してなんでダメだったか書き込んでいるのでとても勉強になります。
またやりとりを見返しえてちゃんと理解を深めていきたいと思います。
どうもありがとうございました!
こもるーさん
わ~良かったです!(*´ω`*)


お役に立ててよかったです(*´ω`*)!!!
テーブルの扱いって、難しいですよね(><)
そして、印刷までして勉強されてて(`;ω;´)がんばりやさん!!尊敬します!
応援しております~ヾ(*´∀`*)ノ