転記元には複数のテーブルとフィールドがあり、
転記元のテーブルにある作成にチェックをいれボタンを押すと
転記先にコピーする様にしたいのですが
プラグインのテーブルコピーを使うとテーブルは一つまで&条件は付けられないことからJavaScriptで作成することとしました。
テーブルから別のアプリのテーブルへのコピーは検索できたのですがフィールドへのコピーが見つからず質問させていただきました。
どうかよろしくお願いいたします。
例 転記先文字列(一行1) = 転記元テーブル1から文字列(一行1)
転記先文字列(一行2) = 転記元文字列(一行2)
転記先文字列(一行3) = 転記元テーブル1から文字列(一行3)
転記先数値1 = 転記元テーブル2から数値
転記先日付 = 転記元テーブル2から日付
4件のコメント
aoan様
テーブルデータを別アプリのレコードフィールドに転記する場合,
テーブルの行数だけ転記先のレコードが生成されることになりますが,
その理解で良いですか?
解釈に誤りがなければ,
テーブル1の行数だけループ処理して,
転記先のフィールド = 転記元のフィールド
と指定したbodyを用意してPUTすることで良いかと思います.
この場合,テーブルの行数でループしているので,テーブル内のフィールドの場合は,
転記先のフィールド = 転記元のテーブルのn行目のフィールド
となります.
例に合わせるなら,
例 転記先文字列(一行1) = 転記元テーブル1,n行目の文字列(一行1)
転記先文字列(一行2) = 転記元文字列(一行2)
転記先文字列(一行3) = 転記元テーブル1,n行目の文字列(一行3)
転記先数値1 = 転記元テーブル2,n行目の数値
転記先日付 = 転記元テーブル2,n行目の日付
上記をテーブル1または2の行数分繰り返すことになるかと思います.
なお,この場合テーブル1と2の行数は同じである必要があります.
また,テーブル1または2行数分だけ転記先レコードが生成します.
意図が違うようであれば,もう少し具体的な状況を記載ください.
(現段階でできていること,コード,エラーがあるならその内容)
また,勝手にレコードの更新(PUT)を前提にして回答しているのですが,
もしそういうことではない(例えば転記先にあらかじめデータが転記された状態で登録画面で表示されるようにしたい,など)
であれば,その旨指摘ください.
TO様
コメントありがとうございます。
説明が足らず申し訳ございませんでした。
”テーブルデータを別アプリのレコードフィールドに転記する場合,
テーブルの行数だけ転記先のレコードが生成されることになりますが,
その理解で良いですか?”
という質問ですが基本的にはそうなることは存じあげています。
しかしながら今回はテーブル1のデータ、テーブル2のデータは同じ行数ではない上、作成したいレコードが
例えばテーブル1の1行目の値とテーブル2の3行目の値などの組み合わせがあるため、手動でチェックをいれた列でレコードを作成したいのです。テーブル1,2には必ずチェックはひとつずつしか入りません。
”勝手にレコードの更新(PUT)を前提にして回答しているのですが”
というところについてはレコードの更新で大丈夫です。
今現状できているコードは以下です。
アプリ間のデータコピーの記述の仕方がわからずつまずいているのとIFのネストがあっているのか不安です。まだまだ悩み途中のコードで申し訳ございませんがアドバイスいただけたら幸いです。
aoan様
「チェックが入ったテーブル行を取得する」のであれば,filterが良いかもしれません.
forEach, map, filterなどをつかってkintoneのrecords配列をもっと上手に扱う
上記の例であれば,
…で配列として取得できます.
(すいません,チェックボックスのフィールドコードが記載されていなかったので勝手に「チェック1」にしています)
もしHitしたら必ずmyRow1は要素数1以上の配列になるので,
myRow[0] =…とします.
もしHitしない場合,要素数0になるので,
if(!myRow.length)で有無の判定が可能です.
ちなみに,想定されていた「チェックボックス.value[0] === '作成'」は,
もしチェックボックスが選択されていない場合に,valueが空配列[]になり,
そこに要素0を指定するのでエラーになると思います.
参考になれば幸いです.
TO様
filter件、ありがとうございます。
何度も申し訳ないのですがアプリ間のデータコピーの記述の仕方がわからずつまずいているのですが//テーブル1の値を転記 の部分の書き方を教えていただけると幸いです。よろしくお願いいたします。