レコードの取得についてご質問

お世話になります。

現在、申込フォームを作成しています。

流れとしては「代表者が申し込む→同行者分を申し込む」となります。登録すると申込番号が付与されます。

同行者分を申し込む際に、代表者の申込番号を入力し、その代表者申込番号をキーにアプリ内で検索して情報(代表者氏名、メルアド、電話番号)を取得したいと考えています。

なんとかここまでは作ってみたのですが、これだと’代表者申込番号フィールド’に代表者番号を入力しても検索が動かず、レコード番号を入力すると情報が取得されてしまいます。

代表者番号で検索ができるようにするにはどうしたら良いでしょうか。

よろしくお願いします。

----------

(function(){
“use strict”;

kintone.events.on([‘app.record.edit.change.代表者申込番号’,
‘app.record.create.代表者申込番号’,
‘app.record.create.change.代表者申込番号’],function(event){

var record = event.record;

var sell = {
app:285,
id:record[‘代表者申込番号’].value //
};

kintone.api(kintone.api.url(‘/k/v1/record’,true),“GET”,sell).then(function(resp){

var d_Name = resp.record[‘代表者名’].value;
var d_Tel = resp.record[‘電話番号_代’].value;
var d_Mail = resp.record[‘メールアドレス_代’].value

var record = kintone.app.record.get(); //編集しているレコードを取得する

record[‘record’][‘代表者名’].value = d_Name;
record[‘record’][‘電話番号_代’].value = d_Tel;
record[‘record’][‘メールアドレス_代’].value = d_Mail;

kintone.app.record.set(record); //編集しているレコードに値をセットする
});
});
})();

レコード番号(id)を指定してデータを取得しているようです。

以下を参考に、/k/v1/recordsのAPIに対して、queryで申込番号の条件を指定してみてはいかがでしょうか。

https://developer.cybozu.io/hc/ja/articles/202331474#step2

〉以下を参考に、/k/v1/recordsのAPIに対して、queryで申込番号の条件を指定してみてはいかがでしょうか。

ありがとうございます。idはレコード番号指定なのでこのような動作となっていたのですね。

アドバイス通りにqueryで作り直したのですが、まだ思った通りに動きません。

「kintone.api(kintone.api.url(‘/k/v1/record’,true),“GET”,sell).then(function(resp){」以下はid指定の時に正常に動いていたので、条件指定の部分が間違っていると思っていますが、ご教授いただけいないでしょうか。

----------

(function(){
“use strict”;

kintone.events.on([‘app.record.edit.change.代表者申込番号’,
‘app.record.create.change.代表者申込番号’],function(event){

var record = event.record;

var 申込番号 = event.record[‘申込番号’].value;
var query = ‘代表者申込番号 = "’ + 申込番号 + ‘"’;

var sell = {
app:285,
query:query,
};

kintone.api(kintone.api.url(‘/k/v1/record’,true),“GET”,sell).then(function(resp){

var d_Name = resp.record[‘代表者名’].value;
var d_Tel = resp.record[‘電話番号_代’].value;
var d_Mail = resp.record[‘メールアドレス_代’].value

var record = kintone.app.record.get();

record[‘record’][‘代表者名’].value = d_Name;
record[‘record’][‘電話番号_代’].value = d_Tel;
record[‘record’][‘メールアドレス_代’].value = d_Mail;

kintone.app.record.set(record);
});
});
})();

3点気になる点がありまして、

 

1.var query = ‘代表者申込番号 = "’ + 申込番号 + ‘"’; は、同行者の申込の場合は条件が逆で、

var query = ‘申込番号 = "’ + 代表者申込番号 + ‘"’ ではないでしょうか?

 

2.kintone.api(kintone.api.url(‘/k/v1/record’,true),“GET”,sell) ではなく、

kintone.api(kintone.api.url(‘/k/v1/records’,true),“GET”,sell)となります。

 

3.2に伴い、レスポンスも、resp.recordsに入ります。

配列ですので、取得結果が存在した場合に値をセットするには、以下のようになるかと思います。

if (resp.records.length > 0){

var d_Name = resp.records[0][‘代表者名’].value;
var d_Tel = resp.records[0][‘電話番号_代’].value;
var d_Mail = resp.records[0][‘メールアドレス_代’].value

var record = kintone.app.record.get();

record[‘record’][‘代表者名’].value = d_Name;
record[‘record’][‘電話番号_代’].value = d_Tel;
record[‘record’][‘メールアドレス_代’].value = d_Mail;

kintone.app.record.set(record);

}

〉PVさま

指摘の箇所を修正して動作するようになりました。

resp.record」などの理解が足りないようなので、勉強したいと思います。

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