<更新処理が上手くいきません>
エラーは出ないものの、更新後の処理が別画面に反映されません。
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アプリのレコード読み込み)の処理も無いのでしょうか?