0

私はいつもファイルの投稿に苦労しています。

私のリクエストは Postman で正常に機能します。動作しているCURLは次のとおりです。

curl --request POST \
  --url https://api.monday.com/v2/file \
  --header 'Authorization: Bearer TOKEN' \
  --header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
  --form 'query=mutation ($file:File!){
          add_file_to_column(item_id:1192060603,column_id:"files3", file:$file){
            id
          }
        }' \
  --form 'variables={}' \
  --form 'map={"image":"variables.file"}' \
  --form 'image=@C:\Users\davec\Downloads\foto1.jpg'

ただし、Zapier アプリで同じ結果を達成しようとしてもうまくいきません。これは私の現在のアプローチです:

const fileResponse = await fetch(bundle.inputData.file).then((res) =>
    res.blob()
  );

  const queryString = `mutation ($file:File!){
    add_file_to_column(item_id:${bundle.inputData.item_id},column_id:"${bundle.inputData.column_id}", file:$file){
      id
    }
  }`;
  const map = {
    image: "variables.file",
  };
  const payload = new FormData();
  payload.append("query", queryString);
  payload.append("variables", "{}");
  payload.append("map", JSON.stringify(map));
  payload.append("image", fileResponse.stream(), bundle.inputData.file_name);

  const response = z
    .request("https://api.monday.com/v2/file", {
      method: "POST",
      "Content-Type": "multipart/form-data; boundary=" + payload.getBoundary(),
      body: payload,
    })
    .then((res) => res.json);

  return response;

bundle.inputData.file送信したいファイルをダウンロードする Zapier の URL です。認証は必要ありません。URL をシークレット クローム ウィンドウに貼り付けると、すぐにダウンロードされます。

このpayload.append("image", fileResponse.stream(), bundle.inputData.file_name);行を削除すると、Postman からファイルを削除した場合と同じエラーが発生します。これにより、ファイルを FormData オブジェクトに追加する方法を除いて、すべて問題ないと思います。

Monday.com から得られるエラーは次のとおりです。

{"error_message":"Unsupported query","status_code":400}
4

0 に答える 0