<更新が上手くいきません>

<更新処理が上手くいきません>

エラーは出ないものの、更新後の処理が別画面に反映されません。

idの取得方法がコンソール上ではrecordInf.$id.valueで持ってこれましたが、

JSEdit内に記述した際は上手くいきませんでした。

見解的にidの取得方法に問題があると感じています。

どなたか、ご教授願います。

 

以下、プログラミング内容です

var record = {
“id”: recordInf[i][‘$id’][‘value’],
“revision”: recordInf[i][‘$revision’][‘value’],
“record” : {
“日付_1”:{“value”:recordInf.Table_0.value[i].value.日付_1.value},
“日付_2”:{“value”:recordInf.Table_0.value[i].value.日付_2.value},
“ユーザー”:{“value”:recordInf.Table_0.value[i].value.ユーザー選択.value},
“数量”:{“value”:recordInf.Table_0.value[i].value.数値_1.value}
}
};
params.records.push(record);
}
kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {

たいさん

機能説明無しで、コードの一部だけでは、問題がちぎれたクイズのようで、なかなかの難問です。
たぶん、Aアプリ更新時に、Aアプリのテーブル行をBアプリの対応する各レコードに反映したいのではないかと思われます。

その前提で、処理を想像すると、 edit.submit.success イベント処理の一部ではないかと思われます。

・(Bアプリのレコード読み込み)
・Bアプリの更新用レコード作成
・Bアプリの更新API

この場合、Aアプリのテーブル行の追加・削除に対応する処理が結構面倒です。

“id”: recordInf[i][‘$id’][‘value’],
“revision”: recordInf[i][‘$revision’][‘value’],

recordInf は、たぶん、Aアプリのレコードだと思われますので、
Bアプリのレコードを読み込んだ変数を指定する必要があります。

また、添え字の[i]は、テーブル行と同じ位置ではなく、
テーブル行の追加・削除を考慮して、テーブル行に該当するBアプリのレコード位置を指定する必要があります。

下記の部分は、そのままではAPI終了前にイベント処理が終了してしまいます。
kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {

API処理終了時に、Promiseオブジェクト(event) を返すようにする必要があります。
return kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {

return event;
}

想像の部分が多いので、的を外しているかもしれません。
少なくともイベント処理全部のコードを上げたほうが的確なアドバイスが得られると思います。

 

rex0220さん

コメント有難う御座います。

 

言葉足らずの質問で申し訳御座いません。

rex0220さんの仰る通り、アプリAの情報を更新した際にアプリBに反映するという仕様です。

 

アプリAで、変更もしくは通知のステータスを設定した際に、

アプリBにレコードが存在しない場合は、アプリBに対し登録を行い、レコードが存在する場合は更新を行ないます。

 

以下、プログラミング内容です

// アプリBに対し、レコードの更新を行なう
caseInfo.update = function(recordInf) {
// REST APIパラメータ
var params = {
// アプリBのアプリ番号
“app”: caseInfo.APP_ID,
// 登録データ
“records”: []
};
// テーブルの行分をループさせる
var length = recordInf.Table_0.value.length;
for (var i = 0; i < length; i++) {
var record = {
“id”: recordInf[i][‘$id’][‘value’],
“revision”: recordInf[i][‘$revision’][‘value’],
“record” : {
“日付_1”:{“value”:recordInf.Table_0.value[i].value.日付_1.value},
“日付_2”:{“value”:recordInf.Table_0.value[i].value.日付_2.value},
“ユーザー”:{“value”:recordInf.Table_0.value[i].value.ユーザー選択.value},
“数量”:{“value”:recordInf.Table_0.value[i].value.数値_1.value}
}
};
params.records.push(record);
}
kintone.api(kintone.api.url(‘/k/v1/records’, true),‘PUT’, params).then(function(resp) {
// 成功時
}, function(resp) {
// 失敗時
alert(“更新に失敗しました。”);
});
};

 

 

上げていただいたコードも、イベント処理の一部ですので、前のアドバイス以上のことはありません。

もしかすると、(Bアプリのレコード読み込み)の処理も無いのでしょうか?