保存実行前イベントで別アプリのデータとチェック後に、項目クリアしたい

初心者です。よろしくお願い致します。
(コードを整えて初心者向けフォーラムで再投稿させて頂きます)

保存前イベントで、別アプリのデータを取得し、内容が異なっていたら
紐づけ用の「レコード番号」をクリアしたいと思っています。
getや条件文の判定の部分はよさそうなのですが、最後のクリア部分が
できずに困っています。
クリア設定の記載方法が間違っていますでしょうか?

(function () {
“use strict”;
    var events = [
    ‘app.record.create.submit’,    
    ‘app.record.edit.submit’,      
    ‘app.record.index.edit.submit’ 
    ];

    kintone.events.on(events, function(event) {
    var record = event.record;
    //「紐付け用レコード番号」が入っている場合
    if (record[‘紐付け用レコード番号’][‘value’]){
        var key = record[‘紐付け用レコード番号’][‘value’];
        var appId = 60;
        var qryInfo = ‘レコード番号 = ’ + key;
        return  kintone.api(’/k/v1/records’, ‘GET’, {
            app: appId,
            query: qryInfo,
            fields: [‘会社名’,‘部署名’,‘氏名’]
        },function(resp) {
            var item1 = resp[‘records’][0][‘会社名’][‘value’];
            var item2 = resp[‘records’][0][‘部署名’][‘value’];
            var item3 = resp[‘records’][0][‘氏名’][‘value’];
           if (record[‘会社名’][‘value’] == item1 &&
               record[‘部署名’][‘value’] == item2 &&
               record[‘顧客担当者名’][‘value’] == item3) {
               return event;
           } else {
               record[‘紐付け用レコード番号’][‘value’] = “”;
               return event;
           };
        });
    } else {
        return event;
    };
    });
})();

 

ikedaさん

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

kintone.api()の非同期処理の完了を待たずに,returnされてしまっているかと思います.

submit系イベントでは,Promiseオブジェクトをreturnすることで非同期処理の完了を待つことができます.
https://developer.cybozu.io/hc/ja/articles/201941984#step2

kintone.api()の第3引数のコールバック関数を省略することで,Promiseオブジェクトを返すことができます.
https://developer.cybozu.io/hc/ja/articles/202166310#step1
https://developer.cybozu.io/hc/ja/articles/360023047852

下記のように変更すると良いかと思います.

return kintone.api('/k/v1/records', 'GET', {
  app: appId,
  query: qryInfo,
  fields: ['会社名', '部署名', '氏名']
}, function (resp) {

return kintone.api('/k/v1/records', 'GET', {
  app: appId,
  query: qryInfo,
  fields: ['会社名', '部署名', '氏名']
}).then(function (resp) {

江田様

アドバイス頂きありがとうございます。
ご教授頂いた点、再度指定頂いたマニュアルを確認し非同期処理の部分を学習しました。

あらためて記載頂いたコードでテストしていますが、やはり「紐付け用レコード番号」をクリアすることは

できません。

別途、指定頂いたマニュアルをみていたところ、

「保存実行前イベントでは”ルックアップコピー先フィールド”は書き換えできない」との記載がありました。

「紐付け用レコード番号」はルックアップコピー先フィールドですので、この仕様に為にクリアできないのですね。
app.record.edit.changeイベントではクリアできていたので、意識できておりませんでした。
少し仕組みを考えなおしたいと思ます。

アドバイス頂いたことで先に進むことができました。

ありがとうございました。