kintoneからのファイル削除について

app.record.detail.showイベントにて特定の条件を満たした場合にapiのrecord/PUTにて添付ファイルを削除しようとしています。

PUTリクエストのファイル削除仕様

https://cybozudev.zendesk.com/hc/ja/articles/201941784-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B4%E6%96%B0-PUT-#step3

によると、「ファイルを削除する場合には、そのファイルのfileKeyをリクエストに渡さなければそのファイルは削除されます。」と記載されています。

そこで、以下のようなコードを記載して更新を試みています。

 

// ファイルキーを削除

for (var i = 0; i < rec[‘添付ファイル’].value.length; i++)
{
    rec[‘添付ファイル’].value[i] = {‘fileKey’: ‘’};
}

// 更新データ作成

var json = {};
json[‘app’] = kintone.app.getId();
json[‘id’] = kintone.app.record.getId();
json[‘record’] = { ‘添付ファイル’: rec[‘添付ファイル’] };

// APIで更新

kintone.api(‘/k/v1/record’, ‘PUT’, json, function (resp) {
    location.reload();
}, function (error) {
    alert(error.message);
});

 

ところが、必ずエラーとなり、ブラウザでデバッグしてみると、エラー情報には「IMAGE1.fileKey 必須です」となってしまいます。

他にも添付ファイルのvalueを[]にしてみたり色々試しているのですが、やはり必須ですのエラーとなってしまいます。

JSのapiでファイルとの紐づけを削除することはできないのでしょうか。

masason さん

 

ご周知の通り、添付ファイルのvalueプロパティは配列ですので、同一の添付ファイルフィールドの全てを落とすのであれば、こちらの最後にもありますが、

rec['添付ファイル'].value = [];

で良いかと思います。今回は不要そうですが、一部のを落とすのであれば、該当する要素({“fileKey”:“********”})を配列から落とすと良いと思います。

コメントありがとうございます。

しかし本文にも記載させていただいているとおり、value=[];にしても同様に必須ですのエラーとなってしまうのです。

具体的にはapiのエラーコールバック関数のerror変数の中をブラウザのデバッグで見ているのですが、record.IMAGE1.valuesに対して「必須です」のエラーが出ていました。

なお、fileKey自体を配列から落とすようにしても同様に必須ですのエラーとなってしまいます。

こちらはrecord.IMAGE1.value[0].fileKeyに対して「必須です」のエラーが出る形となります。

今回の仕様変更で動作が変わってしまったとか・・・?

手元で試したところ、value = [] で、既存の添付ファイルを落とせましたので、アップデートの影響を受ける問題ではないようです。

 

フィールドの設定として、必須項目に設定されている可能性を感じましたが、いかがでしょうか。

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

ご指摘の通り必須項目になっておりました。盲点でした・・・。

必須解除することで無事解決致しました。お騒がせしてすみません。

解決されたようで良かったです。