(function () {
"use strict";
kintone.events.on([
'app.record.create.submit.success', 'app.record.edit.submit.success', 'app.record.index.edit.submit.success',
], function (event) {
var records = event.record;
var subTable = [];
var params = {
"app": 60,
//(サブテーブル)
"Table": {"value": subTable}
};
subTable.push({
value: {
"薬剤名": { value: records.Table.value[0].value['薬剤名'].value },
"数量": { value: records.Table.value[0].value['数量'].value },
}
});
kintone.api(kintone.api.url('/k/v1/records', true), 'POST',params).then(function(resp) {
// 成功時
alert("レコードの登録に成功しました。");
}, function(resp) {
// 失敗時
alert("レコードの登録に失敗しました。");
});
});
})();
上記のコードが書かれたアプリAに登録すると、
別アプリBにレコードが追加され、アプリBのサブテーブルにアプリAのサブテーブルの情報が部分的に入るようにしたいと思っています。
https://developer.cybozu.io/hc/ja/community/posts/214559003 や
https://developer.cybozu.io/hc/ja/community/posts/360047876532
を参考にしながら作ってみましたが、どうしても実現できず、詰まってしまいました。
もしご教授いただけると幸いです。
n-u さん
こんにちは。
どうしても実現できないとのことですが、何か具体的なエラーは出ていますか?
developer network の記事ではデバッグの仕方についても紹介されているので、
まずはエラーの内容を確認してみてはいかがでしょうか。
mohuku さん
ご回答ありがとうございます。
すみません。エラーを載せていませんでした。
POST400 (Bad Request) とのことです。
登録先に対応するフィールドがない、ということなのでしょうか?
n-u さん
こんにちは。
POST400 (Bad Request) とのことです。
登録先に対応するフィールドがない、ということなのでしょうか?
開発者ツールの Console に出力されたエラーの詳細に他の情報は書いていましたか?
たとえば、「フィールドコードが正しくありません」など表示されることもあります。
いずれにせよ、POST のリクエストが正しくなさそうなので、
- リクエストパラメータのテーブルのオブジェクトが正しい記述方法になっているか
(= “params” の中身が正しい書き方になっているか)
→今回実行している REST API はレコードの一括登録だと思いますが、リクエストパラメータで指定するものは
“app” と “records” となっています。
n-u さんのソースコードだと、“records” とあるべきところが “Table” になっていますね。★下にソースコード貼ります
- テーブルのフィールドコードが正しいか(ソースコードを見る限り “Table” でしょうか)
など確認してみてはいかがでしょうか。
現在
varparams = {
"app":60,
//(サブテーブル)
"Table": {"value": subTable} ★
};
修正案
varparams = {
"app":60,
//(サブテーブル)
"records": {"value": subTable} ★
};
mofuku さん
ご返信ありがとうございます。ご指摘いただいた箇所修正してもやはりエラーは治らないようです。
ちなみに、登録タイミングをdetail.showにしてNetworkを調べたところ以下のように返されているようでした。
paramの中でrecordsは宣言しているはずなのですが、書き方がよくないということでしょうか。重ねての質問になりますがよろしくお願いします。
メッセージに表示されていますが、アプリBの必須項目が指定されていません。
mofukuさんが書かれているとおり、APIドキュメントのレコードの登録(POST)のリクエストパラメータに何を指定しなければならないかが記載されていますので、参考にされると良いかと思います。
Ryoji さん mofuku さん
ご回答ありがとうございます。必要な項目は記述したところ、先ほどまでのエラーは起こらなくなりました。ご協力いただきありがとうございます。しかし今度は以下のようなエラーが起きるようになりました。
値の重複を禁止にしなければいけないようなのですが、チェックボックスに入力しようとしても「テーブル内のフィールドは値の重複を禁止できません」というエラーが発生します。
これを解決するにはルックアップフィールドの参照方法を変えるしか方法はないのでしょうか。
何度もすみません。
既に重複したデータが登録されている場合はチェックをONにできません。重複を許可するのであれば、書かれているように参照方法を変える必要があります。
Ryoji さん
ご回答ありがとうございます。
やはりそうなのですね・・・。実現方法について再度検討してみます。