中島@kintone初心者です。
氏名を入力したら、ルックアップで引っ張るようにしたいです。
ただし、レコードがない場合もあるので、
レコードがヒットしなければアラートを出すだけで
ルックアップをしないようにしたいのですが、
この記述でうまく稼働しません。
どなたかアドバイスいただけると助かります
https://developer.cybozu.io/hc/ja/articles/211429603-%E8%87%AA%E5%8B%95%E3%83%AB%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%A7%E5%90%8D%E5%85%A5%E3%82%8C%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E4%BD%9C%E3%82%8B
を参考にしました。
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params, function(resp) {
のところで引っかかっているようなのですが、アプリ側で設定が必要でしょうか。
※もっと簡単にできるよ!と言う場合は
そのあたりもご教示いただけると助かります。
(function () { "use strict"; var events1 = ['app.record.edit.change.氏名']; kintone.events.on(events1, function (event) { var record = event.record; if (record['氏名']['value']) { // ルックアップ先アプリIDを取得してリクエストボディにセット var appId = kintone.app.getLookupTargetAppId("顧客リスト"); var params = { 'app': appId, // ログイン名をキーにしたクエリ 'query': '氏名 = ' + record['氏名']['value'] }; // REST APIでルックアップ先のレコードを1件取得 kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, function (resp) { if (resp['records'].length === 1) { var setRecord = kintone.app.record.get(); // 取得したレコードの値をルックアップ元にセット setRecord['record']['ルックアップ']['value'] = resp['records'][0]['氏名']['value']; // セットした値でルックアップ実行 setRecord['record']['ルックアップ']['lookup'] = true; kintone.app.record.set(setRecord); // マスタに該当レコードがなかった場合のエラー表示 } else { alert('ヒットしませんでした'); } }); } });})();
元のソースが誤っていたのかもしれませんが、
queryの記載が誤っています。下記のソースでお試しください。
変更点は 「‘query’: ‘氏名 = "’ + record[‘氏名’][‘value’] +‘"’」 の部分です。
(値がセットされること、エラーがメッセージで表示されることは確認してあります。)
余裕があればアラートをかっこよくしてもよいかもしれません。
メッセージをスタイリッシュに表示させよう
よろしくお願いします。
(function () {
"use strict";
var events1 = ['app.record.edit.change.氏名'];
kintone.events.on(events1, function (event) {
var record = event.record;
if (record['氏名']['value']) {
// ルックアップ先アプリIDを取得してリクエストボディにセット
var appId = kintone.app.getLookupTargetAppId("顧客リスト");
var params = {
'app': appId,
// ログイン名をキーにしたクエリ
'query': '氏名 = "' + record['氏名']['value'] +'"'
};
// REST APIでルックアップ先のレコードを1件取得
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, function (resp) {
if (resp['records'].length === 1) {
var setRecord = kintone.app.record.get();
// 取得したレコードの値をルックアップ元にセット
setRecord['record']['ルックアップ']['value'] = resp['records'][0]['氏名']['value'];
// セットした値でルックアップ実行
setRecord['record']['ルックアップ']['lookup'] = true;
kintone.app.record.set(setRecord);
// マスタに該当レコードがなかった場合のエラー表示
} else {
alert('ヒットしませんでした');
}
});
}
});
})();
nishita さん
ありがとうございました。
教えていただいたとおりに記載して、
それ以外にも自分が間違っていたところを修正して、
先ほどようやくできました。ありがとうございました。
デバッグもなかなかままならず、時間がかかりましたが 学ぶ良い機会になりました。
今後ともよろしくお願いします。