お世話になっております。kintone REST APIに関してご質問させて頂きます。ご指導いただけると幸いです。
現在、
・アプリA:報告書メール作成
・アプリB:報告書データ
の2つのアプリを開発中です。具体的には、
・アプリA側で新規レコード作成時 or 既存レコード編集時に、
・アプリBの報告書データをkintone.apiにてデータを取得
・アプリAのフィールドに格納する
という機能となります。
アプリB:報告書データですが、
・お客様Aの報告書データ:1件
・お客様Bの報告書データ:2件
・お客様Cの報告書データ:8件
というように、データが複数登録されており、アプリAからアプリBのデータをkintone.apiにて顧客IDをキーにデータを取得しているのですが、
・お客様Aの報告書データ:1件<==取得NG
・お客様Bの報告書データ:2件<==取得OK
・お客様Cの報告書データ:8件<==取得OK
というように、アプリB:報告書データ側の該当レコードが1件の場合のみ、データが取得出来ず、API レスポンスが「resp」に格納されない状態です。
なお、アプリA側では、アプリB側からの関連レコードを表示させていますが、APIでは取得できなかった、[お客様Aの報告書データ:1件]も無事表示されています。
詳しい方がいらっしゃいましたら、アドバイスいただけると幸いです。よろしくお願いいたします。
以下、ソースコードとなります。
(function() {
‘use strict’;
kintone.events.on([‘app.record.create.show’,‘app.record.edit.show’], function(event) {
// 変数各種:関連レコードの絞り込みに利用するフィールドコード
const FIELD_A = ‘gk_wellness_club_id_lookup’; //ルックアップフィールドのフィールドコードを指定
const FIELD_B = ‘customer_id’; //利用者様IDのフィールドコードを指定
// 関連レコードの絞り込みに利用するフィールドコード
const Id = kintone.app.getRelatedRecordsTargetAppId(‘conference_relation_records_all’); //関連レコード表示フィールドのフィールドコードを指定
const offset = 0;
const limit = 10;
let CustomerIdValue = event.record[FIELD_A].value;
let opt_Field = FIELD_B + ‘=’ + ‘"’ + CustomerIdValue + ‘"’;
let params = {totalCount: true, app: Id, query: opt_Field + ’ order by レコード番号 desc limit ’ + limit + ’ offset ’ + offset};
// アプリからデータ取得する(thenを使うことで resp の中にデータが格納される)
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params).then(function(resp) {
let records_count = resp.records.length;
let conference_date_latests_count_mix_all =
" " + resp.records[1].conference_date.value + " " + resp.records[1].conference_hour.value + “” + " " + resp.records[0].conference_date.value + " " + resp.records[0].conference_hour.value + “”
- “●ひと言” + “(” + resp.records[1].conference_date.value + “)” + “” + resp.records[1].message_from_nurse.value + “”
- “●ひと言” + “(” + resp.records[0].conference_date.value + “)” + “” + resp.records[0].message_from_nurse.value ;
// デバッグログ
console.log(resp);
console.log(records_count);
console.log(conference_date_latests_count_mix_all);
// 報告アプリから取得した値を、報告書作成アプリのフィールドに代入して保存
if (records_count > 0) {
//フィールドを連結して「レコード」をセットする
let obj_all = kintone.app.record.get();
obj_all.record.conference_history_text_for_mail_all.value = conference_date_latests_count_mix_all;
kintone.app.record.set(obj_all);
} else {
let api_message = resp.message;
console.log(api_message);
}
return event;
}).catch(function(resp) {
// エラー表示をする
event.error = resp.message;
return event;
});
});
})();