お世話になります。
保存実行前のイベント にて別のアプリにレコードを新規追加したいのですが、「400 bad request」となり登録できません。
配列にデータを格納するところが悪いのか、apiの指定の仕方が悪いのか、またはそれ以外に問題があるのかわからなくて困っています。
ご教授いただけませんでしょうか。
よろしくお願いいたします。
/* レコード追加画面の保存実行前のイベント */
/* レコード一覧画面のインライン編集の保存実行前イベント */
/* レコード編集画面の保存実行前のイベント */
var eventsShow = [‘app.record.create.submit’, ‘app.record.edit.submit’, ‘app.record.index.edit.submit’];
kintone.events.on(eventsShow, function(event) {
var record = event.record;
// 別アプリにレコードを登録
kankeihiDao.insert(record);
return event;
});
// 別アプリレコード登録処理
kankeihiDao.insert = function(recordInf) {
// アプリID
var appId = 17;
// REST APIパラメータ
var params = {
“app”: appId,
// 登録データ
“records”: []
};
// 明細数分の情報を生成
var meisaiLength = recordInf[‘明細テーブル’].value.length;
for (var i = 0; i < meisaiLength; i++) {
var tblVal = recordInf[‘明細テーブル’].value[i].value;
var record = {
“計上予定年月日”: {
“value”: yoteiYmd
},
“飲食年月日”: {
“value”: tblVal[‘利用年月日’].value
},
“支払額_税込”: {
“value”: tblVal[‘申請金額’].value
}
};
params.records.push(record);
}
// 別アプリにレコードを登録
kintone.api(‘/k/v1/records’, ‘POST’, params).then(function(resp) {
// 成功時
}, function(resp) {
// 失敗時
alert(“顧客関係費支払明細レコードの登録に失敗しました。”);
});
};
古川様
お世話になっております。
cstapの江田と申します。
yoteiYmdの書式が間違っているということはありませんか?
日付でしたら、
"2018-01-23"
のようになります。
江田様
いつもお世話になっております。
ご回答どうもありがとうございます。
確認しましたところ、日付は上記のようにハイフン区切りになっておりました。
ただ、少しずつ自己解決(?)しておりまして、登録先のアプリの必須指定している項目を設定していないからなのではないかと思いまして試行錯誤中なのですが、サブテーブルの指定で同じエラーが出ているようなのですが配列に値を設定する方法が誤っているのでしょうか?
初歩的な質問で申し訳ありませんが、よろしくお願いいたします。
// REST APIパラメータ
var params = {
“app”: appId,
// 登録データ
“records”: []
};
// 明細数分の情報を生成
var meisaiLength = recordInf[‘明細テーブル’].value.length;
for (var i = 0; i < meisaiLength; i++) {
var tblVal = recordInf[‘明細テーブル’].value[i].value;
var record = {
“計上予定年月日”: {
“value”: yoteiYmd
},
“飲食年月日”: {
“value”: tblVal[‘利用年月日’].value
},
“支払額_税込”: {
“value”: tblVal[‘申請金額’].value
},
“サブテーブル”: {
“value”: [
{
“value”: {
“会社”: {
“value”: “(株)ABC”
}
}
}
]
}
};
params.records.push(record);
}
古川様
お世話になっております。 cstapの江田です。
登録先の必須項目設定を行い、上記のコードをそのまま使わせていただきましたが、同じようなエラーが起こりませんでした。
一度コンソール画面でエラー内容を確認するとよいかと思います。
kintone.apiの失敗時のrespの中にエラーの詳細が入っています。
下記のような形でログを出してみて下さい。コンソール画面の使い方は「(使っているブラウザ) コンソール 使い方」のように調べると出てくると思います。
/\* レコード追加画面の保存実行前のイベント \*/
/\* レコード一覧画面のインライン編集の保存実行前イベント \*/
/\* レコード編集画面の保存実行前のイベント \*/
vareventsShow=['app.record.create.submit','app.record.edit.submit','app.record.index.edit.submit'];kintone.events.on(eventsShow,function(event){varrecord=event.record;// 別アプリにレコードを登録kankeihiDao.insert(record);event.error="aaa";//追加(無理やりsubmitを止める)returnevent;});// 別アプリレコード登録処理kankeihiDao.insert=function(recordInf){// アプリIDvarappId=9030;// REST APIパラメータvarparams={"app":appId,// 登録データ"records":[]};// 明細数分の情報を生成varmeisaiLength=recordInf['明細テーブル'].value.length;for(vari=0;i\<meisaiLength;i++){vartblVal=recordInf['明細テーブル'].value[i].value;varrecord={"計上予定年月日":{"value":yoteiYmd},"飲食年月日":{"value":tblVal['利用年月日'].value},"支払額\_税込":{"value":tblVal['申請金額'].value},"サブテーブル":{"value":[{"value":{"会社":{"value":"(株)ABC"}}}]}};params.records.push(record);}console.log(params);//追加// 別アプリにレコードを登録kintone.api('/k/v1/records','POST',params).then(function(resp){// 成功時},function(resp){// 失敗時console.log(resp);//追加alert("顧客関係費支払明細レコードの登録に失敗しました。");});};
江田様
お世話になっております。
解決しました!
コンソールで確認したところ、登録先のアプリのサブテーブルに他にも必須項目があり、その設定を欠かしていたことが原因でした。
親切に教えて頂き、どうもありがとうございました。