ルックアップフィールドの値のコピー

ルックアップフィールドの値を保存ボタン押下時に別のルックアップフィールドにコピーしたい

保存を押しても値がコピーされていない

(function() {
   'use strict';
   // レコード保存前イベント
   kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
       var record = event.record;
       // ルックアップフィールド1の値を取得
       var lookupFieldValue = record['今回病院'].value;
       // ルックアップフィールド2に値を設定
       record['前回病院'].value = lookupFieldValue;
       return event;
   });
   
})();

mak さん、こんにちは。
田中太郎と申します。

上記、うまくいかない理由は2つございます。
①ルックアップフィールドは、値を入力した後に、取得ボタンが起動することで、値が設定されます。
下記、URLを参考に、valueの設定後、
record['前回病院'].lookup = true;
を行うことで、ルックアップの取得が行われます。
ルックアップを自動取得する
②上記の取得処理は、保存時イベントでは行うことができません。
下記URLの、
「ルックアップを自動取得する」の行の
「保存するとき」の列を見ていただくと×になっており、
つまり、保存時イベントでは「ルックアップ」フィールドの値の設定はできません。
/ja/kintone/docs/js-api/events/event-object-actions/

なら、どうすれば良いかという話となりますが方法は、2つあると思います。
①編集(新規登録)画面で、「今回病院」のフィールドの値が変わった時に、
「前回病院」に値を設定し、ルックアップの取得を行う。
(ルックアップフィールド自体にchangesイベントは使えませんので、ご注意ください。)
②保存成功後のイベント(submit.success)で、REST APIを用いて該当レコードを更新する。

REST APIは少しハードルが高いかと思いますので、仕様の検討は少し必要となってしまいますが、①の方法が良いかと思います。

頑張ってください。

「いいね!」 1

田中様
ご回答いただきありがとうございます

少し仕様を変更して保存ボタン押下時ではなく、フィールドにコピーボタンを設置してルックアップフィールドの値を
コピーするように変更致しました。

レコード編集画面ではコピーできるのですがレコード追加画面ではルックアップフィールドの値を取得できません
原因分かりますでしょうか

下記レコードになります

(function() {
‘use strict’;
// レコード保存前イベント
kintone.events.on([‘app.record.create.show’, ‘app.record.edit.show’], function(event) {
var record = event.record;
const space = kintone.app.record.getSpaceElement(‘space’);
const button = document.createElement(‘button’);

    button.textContent = 'コピー';
    space.appendChild(button);

    button.addEventListener('click', () => {
        const current = kintone.app.record.get();
        var lookupFieldValue = record['test1'].value;
        console.log(lookupFieldValue);

      // ルックアップフィールド2に値を設定
     
        current.record['test2'].value = lookupFieldValue;
        current.record['test2'].lookup = true;
        kintone.app.record.set(current);   
    });

    return event;

});
})();

クリックイベント内の2行目をご確認ください。
var lookupFieldValue = record['test1'].value;

一つ上の行の
const current = kintone.app.record.get();
で、現在のレコードの情報を取ってきていますが、
currentの変数内のルックアップ1の値ではなく、
eventオブジェクト内のrecord(画面表示時の情報)から、取ってきてしまっていますね。

var lookupFieldValue = current.record['test1'].value;
に直すことで、うまくいくのではと思います。

「いいね!」 1

田中様
ご回答いただきありがとうございます
無事動作すること確認致しました