サブテーブルを別アプリに登録できない

 

(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 さん

 

ご回答ありがとうございます。

やはりそうなのですね・・・。実現方法について再度検討してみます。