Power Automate Desktopからkintone APIでレコード削除できない(CB_IL02エラー)

何を実現したいのかを書きましょう

Power Automate Desktopの「Webサービスを呼び出します」アクションを使って、kintoneのレコード削除APIを実行しようとしています。設定内容は以下の通りです。

  1. URL: https://[サブドメイン].cybozu.com/k/v1/records.json
  2. メソッド: DELETE(POSTも試しましたが同じ結果)
  3. 受け入れる: application/json
  4. カスタムヘッダー: X-Cybozu-API-Token: [APIトークン]
  5. コンテンツタイプ: application/json
  6. 要求本文:
    {
    "app": 822,
    "ids": [58]
    }

実行すると以下のエラーが返ってきます。
{"code":"CB_IL02","id":"KZ2eTVRYapWwcPZwUcZE","message":"不正なリクエストです。"}

試したこと:

  • メソッドをDELETEからPOSTに変更し、以下のリクエストURLに変更
https://[サブドメイン].cybozu.com/k/v1/records/delete.json

⇒「このリンクは不正です」の404 Not Foundエラー

  • ヘッダーにContent-Typeを追加

  • APIトークンの権限を確認(削除権限あり)

  • 「要求本文をエンコードします」はオフ

期待する結果:

  • 指定したレコード(ID:58)を削除できること

質問:

  • Power Automate Desktopからkintone APIでレコード削除する場合、正しい設定方法はありますか?

  • DELETEメソッドで本文を送信できない場合、代替手段はありますか?

同じ経験をされた方や、正しい設定をご存じの方がいれば教えてください。

「いいね!」 1

Power Automate Desktopの利用者でないのに恐縮ですが、、、
一件問題なさそうな設定なのに「不正なリクエストです。」と返却されているので、
リクエストURLにパラメーターを含める方法をだとどうなるでしょうか?
("ids=N"の列挙がかなり面倒になりますが)

↓別のREST APIでもリクエストURLに含めるパターンのほか、「要求の本文」に含める場合でもうまく処理できているようなので、"app": "822"などのように"で囲ってみるのも良いかもしれません。
Power Automate for desktop から kintone REST API を使用してレコード取得とレコード登録を行う #PowerAutomateDesktop - Qiita

私も実践したことは無いので推測ですが、

@puppet さんが挙げられている Qiita の記事にもある通り「要求本文をエンコードします」のチェックは外さないといけないと思います。手元の Power Automate で「Webサービスを呼び出します」アクションをフローに追加したら既定で ON だったので、そこを変えれば行けるかも?

ご返信ありがとうございます。

2点とも検証しましたが、同様のCB_IL02エラーでした…。

変更後URL

https://サブドメイン.cybozu.com/k/v1/records.json?app=822&ids[0]=58

他のアクションにて、メソッド「POST」でのレコード追加、メソッド「GET」でのレコード読み取りをしていますが、「要求本文」にて成功しております。(画像)

"app": "822"のように"で囲ってみましたが、やはり同様のエラーでした。

ご返信ありがとうございます。

試したことに記載し忘れていましたが、「要求本文をエンコードします」はオフにしています…。

気になって私も Power Automate でいろいろ試してみたんですが、 @yui1 さんと一緒でなぜか DELETE だけうまく動かないですね……。 Power Automate 側の制御できない何かしらの仕様があるのかも。

別のサーバーか何かで、 POST や DELETE がどういう通信をしているか検証したら、もしかしたらわかるかも……

Power Automate Desktopでのレコード削除について、以下の方法で解決しました。

「Webサービスを呼び出します」アクションではなく、「PowerShellスクリプトの実行」アクションを使い、以下の Invoke-RestMethod コマンドを実行することで、レコード削除が成功しました。

$headers = @{
"X-Cybozu-API-Token" = "APIトークン"
"Content-Type" = "application/json"
}

$body = @{
app = 822
ids = @(%CurrentItem3%)
} | ConvertTo-Json

Invoke-RestMethod `
-Uri "https://サブドメイン.cybozu.com/k/v1/records.json" `
-Method Delete `
-Headers $headers `
-Body $body

「Webサービスを呼び出します」アクションでDeleteが正常に動作しない理由は不明ですが、Power Automate Desktopの仕様がkintoneのAPIと相性が悪い可能性があります。

「いいね!」 4

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。