アプリIDを元にアプリ名を取得したい

実現したいこと
Aアプリの文字列フィールドにkintone内に作成してある別アプリ(不特定多数)のアプリIDを入力してアプリ名を取得したい

事象
下記JavaScriptを実装しても動作しない

JavaScript
(function() {
“use strict”;

// レコードが表示される度に実行される関数
kintone.events.on('app.record.edit.change.数値', function(event) {
    // 別アプリのアプリIDを取得
    var appId = event.record['数値'].value;

    // アプリ名を取得するリクエストを送信
    kintone.api(kintone.api.url('/k/v1/app', true), 'GET', {id: appId})
    .then(function(response) {
        // アプリ名を取得
        var appName = response.name;

        // 取得したアプリ名を表示
        var appnameField = kintone.app.record.getFieldElement('文字列__1行_');
        appnameField.value = appName;
    })
    .catch(function(error) {
        // エラーが発生した場合の処理
        console.error('エラーが発生しました: ', error);
    });

    return event;
});

})();

  • アプリ名自体はちゃんととれてますかね?そこまでできてて動かないのであれば、問題の切り分けとしてはそこは見たほうがいいかと思います。
  • kintone.app.record.getFieldElement() はレコード作成・編集画面では利用できませんのでまずここは失敗してそうです。詳細
    • 表示する先として、スペースフィールドを用意して、そこに表示するなど、が必要になるとおもいます!

ご回答ありがとうございます。
IDから名前を取得ができたのですが何故かフィールドに書き出されません
原因分かりますでしょうか
下記コードになります
(function() {
“use strict”;
// レコード追加・編集画面が表示される度に実行される関数
kintone.events.on([‘app.record.create.change.数値’, ‘app.record.edit.change.数値’], function(event) {

   // 別アプリのアプリIDが入力されるフィールドコード
   var appIdFieldCode = '数値';

   // アプリIDが入力されたフィールドの値を取得
   var appId = event.record[appIdFieldCode].value;

   // アプリIDを使用してアプリ名を取得するリクエストを送信
   kintone.api(kintone.api.url('/k/v1/app', true), 'GET', { id: appId })
   .then(function(response) {
    console.log(response.name);

       // 取得したアプリ名をフィールドに書き出す
       event.record['kintoneアプリ名'].value = response.name;
   })
   .catch(function(error) {
       // エラーが発生した場合の処理
       console.error('エラーが発生しました: ', error);
   });
   return event;

});
})();

スペースフィールドじゃなくて、通常のフィールドに書き出す方式にしたんですかね
changeイベントの場合、api叩くなどの非同期処理を待ってreturnすることができないので、
thenの中で、 kintone.app.record.set() を使ってください!

下記のようなかんじです


  const data = kintone.app.record.get();
  data.record['kintoneアプリ名'].value = response.name;
  kintone.app.record.set(data);

リファレンスはここです

「いいね!」 1

無事解決致しました。
ありがとうございました!

「いいね!」 1

こちらの処理なのですがif文でアプリIDからアプリ名を取得できなかった場合は””を入れる処理を実装することはできますでしょうか

できますが、取得できない、とは該当するものがなくエラーがでるイメージです?

であれば.catchでその制御をやればいいかと思います

ここにあるような感じですね

エラーを出すというよりアプリIDを入力してアプリ名が取得出来なければフィールドに””を入力したいといったイメージです

はい、ですので取得できないなどのエラーによって、そのようにしたい場合は、catchに書けば実現できます、がどうでしょうか

ありがとうございます!
一旦試してみます

catchの中で書いてみましたがうまくいきません
考え方はこれでよろしいでしょうか?

.catch(function(error) {
// エラーが発生した場合の処理
console.error('エラーが発生しました: ', error);
// スペース名が取得できない場合、空の文字列をセット
var emptyVaue = “”;
var data = {};
data[spaceNameFieldCode] = { value: emptyVaue };
kintone.app.record.set(data);

はい、考え方としてはあたっています!
デバッグしてまず、ここに到達しているか、到達したとしてうまく動いているか、はみたほうがいいですね。
console.log() を使っていますが内容は出力されていますでしょうか?
他にもエラーがでているか、ブレークポイントを設定するなどでコードがどう動作しているのかをまずは見てみてください。

ありがとうございます
デバッグして確認してみます
1つ質問なのですが空文字””はフィールドに出力できるものなのでしょうか?

一行の文字列フィールドですよね?はい、空文字を指定することで空白がはいります!

「いいね!」 1