1つのアプリにテーブルが2つあります。
Aテーブル
・ルックアップフィールド
・数値フィールド
・ドロップダウンフィールド
↓
Bテーブル
・数値フィールド
・ドロップダウンフィールド
・数値フィールド2
・文字列1行フィールド
A→Bへ、ルックアップフィールド・数値フィールド・ドロップダウンフィールドをAテーブル編集したタイミングでコピーすることは可能でしょうか。
1つのアプリにテーブルが2つあります。
Aテーブル
・ルックアップフィールド
・数値フィールド
・ドロップダウンフィールド
↓
Bテーブル
・数値フィールド
・ドロップダウンフィールド
・数値フィールド2
・文字列1行フィールド
A→Bへ、ルックアップフィールド・数値フィールド・ドロップダウンフィールドをAテーブル編集したタイミングでコピーすることは可能でしょうか。
@kashihara さん
こんにちは、少しお力になれそうだと思ったのでご回答させていただきました。
恐らくされたい事は、レコード新規・編集時のフィールド値チェンジイベントでできますね。(下記に参考リンク貼ってます。)
参考リンク:レコード追加画面でフィールドの値を変更したときのイベント - cybozu developer network
参考リンク:レコード編集画面でフィールドの値を変更したときのイベント - cybozu developer network
ただ一点注意でおっしゃられている中でルックアップフィールドのみチェンジイベントが発生しません。(理由はあるんですが割愛しますね…)
もしルックアップした時にチェンジイベント発火したいと思いましたら、ルックアップでコピーされる先のフィールドにチェンジイベントを書けたら発火します。
加えて、サブテーブルの中をコピーされたいとのことですが、イベント発火時の配列を見てみると
event.changes.row.value
とありますが、そちらで今回変更されたデータが入ってますので、そちらを対象のテーブルにpush()などで追加してあげたらできるかなと考えております。
ちなみに、
サブテーブル行追加に関しては、サブテーブルのフィールドコード。
サブテーブルの中のフィールドは、そのフィールドのフィールドコードで発火できます。
下記に軽くサンプル書かせていただきますね。
(() => {
'use strict'
kintone.events.on(['app.record.create.change.数値', 'app.record.edit.change.数値',
'app.record.create.change.ドロップダウン', 'app.record.edit.change.ドロップダウン',
'app.record.create.change.Aテーブル', 'app.record.edit.change.Aテーブル',], (event) => {
//record,changesを定義
const record = event.record;
const changes = event.changes;
//Bテーブルを定義
const b_table = record.Bテーブル.value;
//Bテーブルの配列にpush
b_table.push(
{
value:{
数値2:{
value:changes.row.value.数値.value,
type:'NUMBER'
},
ドロップダウン2:{
value:changes.row.value.ドロップダウン.value,
type:'DROP_DOWN'
},
文字列1行:{
value:changes.row.value.ルックアップ.value,
type:'SINGLE_LINE_TEXT'
},
}
}
)
console.log(changes);
//return eventをして値更新
return event;
});
})();
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。