別アプリから取得した値を反映しようとしても画面に反映されない

■背景・実現したいこと

レコードを新規・編集するときに、[ユーザーマスタ]アプリから[顧客管理]アプリにデータをコピーしたいと考えております。

[ユーザーマスタ]アプリ:転記元
・チーム名
・担当課

[顧客管理]アプリ:転記先
・チーム名
・担当課

実現したいこととしましては、
[顧客管理]アプリで「チーム名」を入力したら、レコード追加時または編集時に「担当課」を[ユーザーマスタ]アプリから取得して、[顧客管理]アプリの「担当課」に反映したい
と考えております。

デバッグで確認する限りでは、GETで取得できており、
kintone.app.record.set(event);
で「担当課」フィールドに値が反映されるのですが、最終的にエラーになってしまいます。

いろいろ調べてみたのですが、値を反映させた状態で完了させることができずにおります。

解決策について、ご教示いただけますと幸いです。

■エラー情報 (開発者ツールのコンソール)
Uncaught Error: USAGE: kintone.api(pathOrUrl, method, params, opt_callback, opt_errback)

 

 

■利用したソースコード
コードについては、下記投稿を参考にさせていただきました。
GETで取得した値が反映されない
別のアプリから取得できない

(function() {
    'use strict';
        
  kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
        var record = event.record;
        var team = record['チーム名'].value;
      const query = 'チーム名= "' + team + '"';
        
        var param = {
            'app': 189,
            'query': query
        };

        return kintone.api(kintone.api(
          kintone.api.url('/k/v1/records', true), 
          'GET',
          param
        )
        .then(function(resp) {
            var apprecs = resp.records[0];
          tanto = apprecs['担当課'].value;
          record['担当課'].value = tanto;
          kintone.app.record.set(event);
        }));
  });
})();

 

FUJI

       returnkintone.api(kintone.api(
          kintone.api.url('/k/v1/records',true), 

「kintone.api(」がひとつ多いかもしれません。

902343704226様
完全に見落としていましたので、ご指摘いただきありがとうございます!

下記のように修正いたしました。

        return kintone.api(
        kintone.api.url('/k/v1/records', true), 

すると、今度は下記のエラーメッセージが24行目の
kintone.app.record.set(event);
で発生してしまい。。

 

私のコードではkintone.app.record.set(event);が使えないようなので、削除したところエラーはなくなりましたが結局値は反映されずでした。

(function() {
    'use strict';
        
  kintone.events.on(['app.record.create.submit','app.record.edit.submit'],function(event) {
       varrecord = event.record;
       varteam = record['チーム名'].value;
     constquery ='チーム名= "'+ team +'"';
        
       varparam = {
           'app':189,
           'query': query
        };
       returnkintone.api(
          kintone.api.url('/k/v1/records',true), 
         'GET',
          param
        )
        .then(function(resp) {
           varapprecs = resp.records[0];
          tanto = apprecs['担当課'].value;
          record['担当課'].value = tanto;
      });
  });
})();

値がフィールドに反映されるようにするためには、他はどこを修正すれば良さそうでしょうか?

 

FUJI様

レコードの値をセットする
record.set()はイベントハンドラーの中では使えないのですが,
ボタンを置いてclickイベントにしたり,ちょっと工夫することで(コールバックの中でやるとか)使うことは可能です.
(今回の例ではコールバック関数が省略されているのでひっかかったのかな,と思います)
ただ,今回の例ではそんなことをしなくても,return eventで反映されるかと思います.

        .then(function(resp) {
            var apprecs = resp.records[0];
          tanto = apprecs['担当課'].value;
          record['担当課'].value = tanto;
      return event;
        });

下記を参照ください.
kintoneにおけるPromiseの書き方の基本

902343704226様

再度アドバイスいただきありがとうございます!
最後にreturn eventする処理を加えるだけで、反映されるようになりました。

昨日からkintone Javascript APIから触り始めたため、理解できていないことが多いですが、参照いただいたサイトや、下記アドバイスを参考にして、これから覚えていきたいと思います。

record.set()はイベントハンドラーの中では使えないのですが,
ボタンを置いてclickイベントにしたり,ちょっと工夫することで(コールバックの中でやるとか)使うことは可能です

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。