実現したいこと
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;
});
})();
ご回答ありがとうございます。
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;
});
})();
mura
4
スペースフィールドじゃなくて、通常のフィールドに書き出す方式にしたんですかね
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
こちらの処理なのですがif文でアプリIDからアプリ名を取得できなかった場合は””を入れる処理を実装することはできますでしょうか
mura
7
できますが、取得できない、とは該当するものがなくエラーがでるイメージです?
であれば.catchでその制御をやればいいかと思います
ここにあるような感じですね
エラーを出すというよりアプリIDを入力してアプリ名が取得出来なければフィールドに””を入力したいといったイメージです
mura
9
はい、ですので取得できないなどのエラーによって、そのようにしたい場合は、catchに書けば実現できます、がどうでしょうか
catchの中で書いてみましたがうまくいきません
考え方はこれでよろしいでしょうか?
.catch(function(error) {
// エラーが発生した場合の処理
console.error('エラーが発生しました: ', error);
// スペース名が取得できない場合、空の文字列をセット
var emptyVaue = “”;
var data = {};
data[spaceNameFieldCode] = { value: emptyVaue };
kintone.app.record.set(data);
mura
12
はい、考え方としてはあたっています!
デバッグしてまず、ここに到達しているか、到達したとしてうまく動いているか、はみたほうがいいですね。
console.log()
を使っていますが内容は出力されていますでしょうか?
他にもエラーがでているか、ブレークポイントを設定するなどでコードがどう動作しているのかをまずは見てみてください。
ありがとうございます
デバッグして確認してみます
1つ質問なのですが空文字””はフィールドに出力できるものなのでしょうか?
mura
14
一行の文字列フィールドですよね?はい、空文字を指定することで空白がはいります!
「いいね!」 1
system
(system)
クローズされました:
15
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。