ルックアップ自動取得時のエラー回避

中島@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 さん

ありがとうございました。

教えていただいたとおりに記載して、

それ以外にも自分が間違っていたところを修正して、

先ほどようやくできました。ありがとうございました。

デバッグもなかなかままならず、時間がかかりましたが 学ぶ良い機会になりました。

今後ともよろしくお願いします。