別アプリにあるサブテーブル内の特定行の特定項目だけ更新する方法

以下「レコード更新におけるテーブル操作のテクニック」の「テーブルの1行の特定のフィールドのみを更新する」を参考にさせていただいてアプリを作成しているのですがうまく更新することができません。

サブテーブル内の特定の一行の特定の1項目の値を更新出来るという認識でアプリを作りましたが、結果指定した行以外の行は削除されてしまい指定した行も指定した項目以外が消えてしまっております。

https://cybozudev.zendesk.com/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF

 

function upd128(resp,sszno,sszix,shksu) {
if (resp.totalCount > 0 ){
var recid = resp.records[0].レコード番号.value;
var gupdatekey = Number(recid);
var zumsu = Number(resp.records[0].MEISAI.value[sszix].value[“出荷済数量”].value) + Number(shksu);
var subid = resp.records[0].MEISAI.value[sszix].id;

var gupdrec = {};
gupdrec[“MEISAI”]= {“value”:
[
{
“id;”:subid,
“value”:{
“出荷済数量”:{
“value”:zumsu
}
}
}
]
};
return kintone.api(
kintone.api.url(‘/k/v1/record’, true), ‘PUT’, {
app: 128,
id: gupdatekey,
record: gupdrec
}).then (
function(resp){
console.log(‘ok’);
},
function(error){
console.log(error);
event.error = ‘TTP出荷指図のGETエラー’;
return event;
}
);
};
}

どうすればうまくいくかご教授ください

中井さん

サブテーブル更新時は、全行およびサブテーブル内の全項目を渡してあげる必要があります。
削除する行データ・項目のみ指定しないということです。

 

rex0220様

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

「更新する行のIDを指定することで、その行の特定のフィールドのみを更新できます。
同じ行の他のフィールドを更新しない場合にはそのフィールドを省くことができます。」

と「レコード更新におけるテーブル操作のテクニック」の「テーブルの1行の特定のフィールドのみを更新する」に記載されておりますが、これはどういう意味なのでしょうか?現象を見ていますとrex0220様のおっしゃる通りかと思いますがここを読んでしまうと特定項目だけ更新が出来そうな期待をしてしまいました。

 

この記述については、わかりません。

これまでテーブル更新を行ってきた経験上では、“Table"内の"id” を指定した場合は更新行として扱われ、“Table"内の"id” が無い場合は、新規行として登録されました。
指定しない行は、そのまま削除されていました。

最近は、細かな仕様検証を行っていないので、何か変更があったのかもしれませんね。

該当の記事に質問されては、いかがでしょうか?

 

rex0220様

なるほど、そういうことなのですね

「“Table"内の"id” を指定した場合は更新行として扱われ、“Table"内の"id” が無い場合は、新規行として登録される」

という意味なのですね。理解できました。

ありがとうございました。