レコード更新後、他アプリのレコードも更新したい

お世話になります。JavaScript初心者です。

日報アプリにレコードを登録すると、自動で面談履歴アプリにもレコードが登録されるScriptを作成しました。

しかし、日報アプリのレコードを更新すると、自動で面談履歴アプリが更新されるScriptの作成に手こずっています。

 

様々のサンプルを参考にしましたが、どれもうまくいかず・・・。

お力をお貸しいただけないでしょうか?よろしくお願い致します。

 

下記、作成したレコード登録Scriptです。

これに、日報アプリレコード編集画面保存成功時に面談履歴アプリレコードを更新する機能をつけたいです。

(別ファイルになっても問題ないです)

 

 (function() {
     “use strict”;
     kintone.events.on(‘app.record.create.submit.success’, function(event) {

         // レコードの取得
         var 詳細 = ‘’;
             if (event) {
                 詳細 = event[“record”][“詳細”][“value”]; 
             }
         var 訪問先 = ‘’;
             if (event) {
                 訪問先 = event[“record”][“訪問先”][“value”]; 
             }     
         var recordId = event.recordId;
            
         // リクエストプロパティ(JSON)
         var params = {
             “app”: **,  // ← 面談履歴アプリのID
             “record”: {
                 “詳細”: { “value”: 詳細 },
                 “面談先”: { “value”: 訪問先 },
                 “recordId”: { “value”: recordId },
             }
         };     
                
 
         // kintone REST API リクエスト ~ レコードの登録(POST)
         kintone.api(
             kintone.api.url(‘/k/v1/record’, true), // - pathOrUrl
             ‘POST’,                                // - method
             params,                                // - params
             function(resp) {                       // - callback
                 // (特に何もしない)
             },
             function(resp) {                       // - errback
                 // (特に何もしない)
             }
         );
     });
 })();

 

 

kawasaki-m さん

現在のコードだと、REST API の完了を待たずに、イベント処理が終了してしまい、詳細画面に画面遷移します。

そのため、REST APIが実行されていません。

レコード追加画面の保存成功後イベント には、下記があります。

・kintone.Promiseオブジェクトをreturnすると、非同期処理の実行を待つことができます。

参考 kintone API で Promise を使ってみよう!

下記は、切り貼りしただけですので、検証をお願いします。

return kintone.api(

 return event;  で、「kintone.Promiseオブジェクトをreturn」となります。

 

// kintone REST API リクエスト ~ レコードの登録(POST)
return kintone.api(
kintone.api.url('/k/v1/record', true), 'POST', params).then(function(resp) {
return event;
}).catch(function(error){
console.log('post error', error);
return event;
});

 

rex0220 様

早速のコメントありがとうございます。

日報アプリの編集保存成功時に、面談履歴アプリのレコードを登録することができました。

 

欲を言いますと、

日報アプリレコード編集保存成功時に、”該当する” 面談履歴アプリレコードを更新したいのですが、

こちらもご教示いただけると大変喜びます。

 

下記、訂正したScriptです。

(レコード追加時に保存ができなくなったので、'app.record.create.submit.success’の部分は一旦削除しました。)

 (function() {
     “use strict”;
     kintone.events.on(‘app.record.edit.submit.success’, function(event) {

         // レコードの取得
         var 詳細 = ‘’;
             if (event) {
                 詳細 = event[“record”][“詳細”][“value”]; 
             }
         var 訪問先 = ‘’;
             if (event) {
                 訪問先 = event[“record”][“訪問先”][“value”]; 
             }     
         var recordId = event.recordId;
            
         // リクエストプロパティ(JSON)
         var params = {
             “app”: **,  // ← 面談履歴アプリのID
             “record”: {
                 “詳細”: { “value”: 詳細 },
                 “面談先”: { “value”: 訪問先 },
                 “recordId”: { “value”: recordId },
             }
         };     
                
         // kintone REST API リクエスト ~ レコードの登録(POST)
         return kintone.api(
         kintone.api.url(‘/k/v1/record’, true), ‘POST’, params).then(function(resp) {
         return event;
         }).catch(function(error){
         console.log(‘post error’, error);
         return event;
         });

     });
 })();

 

更新の場合は、レコードの更新(1件) API の updateKey 指定が使えます。

まず、面談履歴アプリの recordId をフォーム設定で重複禁止にして、updateKey に指定できるようにします。

 

// リクエストプロパティ(JSON)
var params = {
"app": ** , // ← 面談履歴アプリのID
"updateKey": {
"field": "recordId",
"value": recordId
},
"record": {
"詳細": { "value": 詳細 },
"面談先": { "value": 訪問先 },
}
};

// kintone REST API リクエスト ~ レコードの更新(PUT)
return kintone.api(
kintone.api.url('/k/v1/record', true), 'PUT', params).then(function(resp) {
return event;
}).catch(function(error){
console.log('put error', error);
return event;
});

 

rex0220 様

早速のコメントありがとうございます。

いただいた内容で、やりたいことを実現することができました。

ご対応ありがとうございます!