1つのアプリの中に2つのテーブルを設定しました。各テーブルのフィールドは以下の通りです。
1.テーブルのフィールドコード:tehai_table
フィード
➀数値フィールド:tehai_renban
②ルックアップフィールド:gyosya_tehai
③リンクフィールド:リンク
④リンクフィールド:リンク_0
⑤数値フィールド:zeinuki_tehai
⑥ドロップダウンフィールド:shohizei
⑦数値フィールド:zeikomi_tehai
⑧チェックボックスフィールド:hiyouhassei
2.テーブルのフィールドコード:shiharai_table
フィード
⑨数値フィールド:shiharai_renban
⑩ルックアップフィールド:gyosya_shiharai
⑪ルックアップフィール:ルックアップ
⑫数値フィールド:zeikomi_shiharai
⑬数値フィールド:zeinuki_shiharai
⑭ドロップダウンフィールド:zei_shiharai
⑮日付フィールド:日付
⑯ドロップダウンフィールド:ドロップダウン_1
⑰ドロップダウンフィールド:ドロップダウン_2
⑱文字列フィールド:hiyouhassei_shiharai
このテーブルを、下記の通り「1.」のテーブルにある値をコピーしたいです。
➀数値フィールド:tehai_renban → ⑨数値フィールド:shiharai_renban
②ルックアップフィールド:gyosya_tehai → ⑩ルックアップフィールド:gyosya_shiharai
⑤数値フィールド:zeinuki_tehai → ⑬数値フィールド:zeinuki_shiharai
⑥ドロップダウンフィールド:shohizei → ⑭ドロップダウンフィールド:zei_shiharai
⑦数値フィールド:zeikomi_tehai → ⑫数値フィールド:zeikomi_shiharai
⑧チェックボックスフィールド:hiyouhassei → ⑱文字列フィールド:hiyouhassei_shiharai
その他のフィールドは、それぞれのテーブルで保持しコピーはしない。
JavaScriptで、可能でしょうか?もし可能でしたらコードを教えてください。
mura
2
ボタンを押して特定のフィールドをコピーというようなことはJSカスタマイズ次第で可能ですし、挙げられているフィールドでもできそうにみえます!
レコードを保存するときのイベント、においてテーブルAのデータをfor文等でループしながら、テーブルBにコピーしていく、という流れかなと思います
また、
ここは有志のメンバーが回答するコミュニティですので、ご自身で試行錯誤せずコードを教えてください、というのはフリーライド感が強く、回答つきにくいとおもいます!
ここまではやったけど、このエラーが解消したい、進め方がわからない、など、もう少しご自身でためして、分からない箇所を部分的にきくなどしていただくほうが良いと思います。
ご指摘ありがとうございます。
一度作成したコードを下記に示します。
(function() {
“use strict”;
kintone.events.on('app.record.edit.submit', function(event) {
// レコードの情報を取得
var record = event.record;
// テーブル1の情報を取得
var table1 = record['tehai_table'].value;
// テーブル2の情報を取得
var table2 = record['shiharai_table'].value;
// テーブル1とテーブル2の同じフィールドに対して情報を反映
for (var i = 0; i < Math.min(table1.length, table2.length); i++) {
var table1Item = table1[i];
var table2Item = table2[i];
// テーブル2のフィールド情報をテーブル1に反映
table1Item.value_renban_tehai = table2Item.value_renban_shiharai;
table1Item.value_gyosya_tehai = table2Item.value_gyosya_shiharai;
table1Item.value_担当者 = ''; // テーブル2に該当するフィールドがないため空文字
table1Item.value_リンク = ''; // テーブル2に該当するフィールドがないため空文字
table1Item.value_リンク_0 = ''; // テーブル2に該当するフィールドがないため空文字
table1Item.value_税別 = table2Item.value_hoshi税別;
table1Item.value_zeinuki_tehai = table2Item.value_zeinuki_shiharai;
table1Item.value_shohizei = table2Item.value_zei_shiharai;
table1Item.value_zeikomi_tehai = table2Item.value_zeikomi_shiharai;
table1Item.value_hiyouhassei = table2Item.value_hiyouhassei_shiharai;
}
// レコードの情報を更新
record['tehai_table'].value = table1;
return event;
});
})();
うまくいかず。ご教示お願いします。
mura
4
どこがうまくいきませんか?「うまくいかない」の詳細をのせるといいとおもいます!
うまくいかない、にも途中まではうごく、など様々あります。
また、エラーがでているかも確認してみてください。
エラーがでていればその詳細も共有ください。
エラーを見ることは今後も役に立ちます。
ぱっと見ですが、
table1Item.value_renban_tehai = table2Item.value_renban_shiharai;
このような値の入れ方がまちがっているようにみえますね。
table1Item.value.フィールドコード.value = table2Item.value.フィールドコード.value
のようにする必要があるかと。
テーブルの構造は下記になっています。一度みてみてください。
「いいね!」 1
ありがとうございます。
コードの書き換えや、いただいたURLなどを参考に再度調整してみます!
いろいろとありがとうございます。
すみません。下記コードでテスト環境を作成しました。
「 table2Item.value.支払連番.value = table1Item.value.手配連番.value;」だけだとうまく反映されましたが、「 table2Item.value.支払業者.value = table1Item.value.手配業者.value;」の部分を追加しても、反映してくれず最初の”連番”のみ更新・反映してくれます。お気づきの点がございましたら、ご教示お願い致します。
(function() {
“use strict”;
kintone.events.on('app.record.edit.submit', function(event) {
// レコードの情報を取得
var record = event.record;
// テーブル1の情報を取得
var table1 = record['手配T'].value;
// テーブル2の情報を取得
var table2 = record['支払T'].value;
// テーブル1とテーブル2の同じフィールドに対して情報を反映
for (var i = 0; i < Math.min(table1.length, table2.length); i++) {
var table1Item = table1[i];
var table2Item = table2[i];
// テーブル2のフィールド情報をテーブル1に反映
table2Item.value.支払連番.value = table1Item.value.手配連番.value;
table2Item.value.支払業者.value = table1Item.value.手配業者.value;
}
// レコードの情報を更新
record['支払T'].value = table2;
return event;
});
})();
mura
7
支払業者と手配業者のフィールドタイプは一致してますかね?
反映しないならなんらかの理由があるとおもうので、
そこでブレークポイントをためしてほしいです。
mura
8
あとこれもきになりますね、これですと両方のテーブルの数があわないと一致しないので。。
完全に上書きしていいのであれば、table1の長さでループしたほうがいいでしょうね。
ありがとうございます。
いろいろ悪戦苦闘しながら、やってみます。
for (var i = 0; i < Math.min(table1.length, table2.length); i++) {
ここですね!ありがとうございます。
見直します!
mura
10
上書きしていいなら、ここにあるように、table2については、(初期化した上で、)table1のlength回数分、.pushで追加すればいいとおもいます!
system
(system)
クローズされました:
11
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。