テーブルの挿入について

お世話になっております。

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

上記のトピックを参考に、アプリを作成しているのですが、

指定した行に追加する、という方法はありますでしょうか?

developerに限らず、javascriptのサイトを色々見て回ったのですが残念なことに触れられているものが見つからず。。

ご教授の程、宜しくお願いします。

こんにちは!

テーブルの中身 が

tableData = [{A(1行目)}, {B(2行目)}, {C(3行目)}]

だとしたら、

新しい行DをAとBの間に入れたかったら、

tableData=[{A},{D},{B},{C}]

となるようにして更新かけると良いです^0^

指定行に挿入となると

JavaScriptで配列の操作をするのがちょっとややこしいかもしれませんが・・・!

juridon様

お世話になっております。

返信が遅くなってすみません。

>tableData = [{A(1行目)}, {B(2行目)}, {C(3行目)}]

>だとしたら、

>新しい行DをAとBの間に入れたかったら、

>tableData=[{A},{D},{B},{C}]

>となるようにして更新かけると良いです^0^

 

↑これはわかるのですが、トピックのようにJavascriptでやりたいのです。

言葉足らずで申し訳ありません。

ボタンを押して指定した行に追加しようと考えております。

Javascriptの行を指定の箇所に追加するというのはあまり見なかったので、

イメージのお話なのですが、

1行目(A)2行目(B) 3行目(C)とあり、(D)を2行目に挿入したい場合、

追加したいと考える2行目(B)をコピーして3行目(C)の上に挿入、

2行目(B)を(D)に値を変更する、

みたいな感じなのかな?と思っています。

今回幸い?なことに各行には行の番号も振っておりますので、

トピックと同様最後には行番号更新の関数をかけております。

ただ今まで最初の行に追加するとかしか経験がないもので、

行を指定して挿入のスクリプトがわからず、もしご存じでしたらご教授願います。

こもるーさん

JavaScriptのことだと認識しておりました^0^!

こちらこそ言葉足らずでスミマセン:sweat_drops:

配列の途中に追加するとなると、たとえばspliceなどで追加できるかなぁ・・・と思います:sparkles:

↓こちらQiitaの記事ですが参考になりますでしょうか(><)
JavaScriptの配列の使い方まとめ。要素の追加,結合,取得,削除
https://qiita.com/takeharu/items/d75f96f81ff83680013f#%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E4%BD%8D%E7%BD%AE%E3%81%AB%E4%B8%80%E3%81%A4%E4%BB%A5%E4%B8%8A%E8%BF%BD%E5%8A%A0—splice

Juridonさん

毎度返信が遅くなり申し訳ありません。

リンクの提供ありがとうございます!

確認したのですが、

上記でお伝えしている内容の場合、

このリンクの配列の指定した位置に~・・のものだと、まず、テーブルの内容をすべて記憶させる、

ということになりますよね。

そうすると膨大なScriptになる気がします。

なので、2行目に追加したければ

2行目の「2」という値を拾って下記の動作になればいいんだと思いました。

 

例)「てきすとちゃん」を2行目に追加したい

行番号 文字フィールド

1 てきすと先生

2 てきすと様 ←まず「2」という値を探す

3 てきすとさん

1 てきすと先生

2 てきすと様

てきすと様   ←行を増やす+値をコピー

3 てきすとさん

1 てきすと先生

2 てきすとちゃん ←値を変更する

てきすと様

3 てきすとさん

 

途中に追加するって難しいんですね;

こもるーさん

 

こういう内容であってますでしょうか!?!?

 

挿入行番号フィールド(数値)

スペースフィールド上にボタンを作って

ボタンをクリックしたら↓こんな感じのスクリプトにすれば指定の行に追加できますが、参考になりますでしょうか!?

 


        let obj = kintone.app.record.get();

        let tb = obj.record.テーブル.value;

        let newRow={//空っぽの行

            id:null,

            value:{

                '名前':{'type':'SINGLE\_LINE\_TEXT','value': "たろう"},

                '学年':{'type':'NUMBER','value': "3"}, 

                '学校':{'type':'DROP\_DOWN','value': "中学校"}

            }

        }

        tb.splice(Number(obj.record.挿入行番号.value), 0, newRow);

        kintone.app.record.set(obj);

 

juridonさん

神です、合っております;;

聞いてばかりじゃいけないと思い、tableへの挿入を調べて調べて

insertRowを使うのかとチャレンジしたものの、うまくいかず。。

かつconstを使用するのかと思いきやletを使うのですね。

またPUTを使用して文字を入れるのだと思っていたので、
そちらも驚きです。
全く違う方法での解決策だったので、とても勉強になります。

自身の環境でも無事動作することを確認致しました。
私のフワッとした質問を考えて頂き、本当にありがとうございました!

let obj = kintone.app.record.get();
let tb = obj.record.伝言板.value;
var No = obj.record.対象行番号.value;
                   var eText = obj.record.文字コード.value;
let newRow={//空っぽの行
id:null,
value:{
“行番号” : {“type”: “NUMBER”, “value”: No},
“文字列”: {“type”: “SINGLE_LINE_TEXT”, “value”: eText}
}
}
tb.splice(Number(obj.record.対象行番号.value), 0, newRow);
kintone.app.record.set(obj);

こもるーさん

良かったですε-(´∀`*)ホッ

kintoneのカスタマイズのJavaScriptは独特ですもんね!私もなれるまでは随分かかりましたよ(*´∀`*):sweat_drops:

 

let か const の件ですが、constの方が良いです:sweat_drops:ありがとうございます^0^!