kintoneでJavaScriptを使ってファイルアップロード機能を作成していると、少量のデータでは成功するのに、少し文字数や容量が増えた途端に403エラーが発生するケースがあります。特にプログラミング経験が少ない状態では、コードの問題なのか、kintone側の制限なのか判断が難しいことがあります。
この記事では、kintoneのJavaScriptカスタマイズでファイルアップロード時に403エラーが発生する主な原因と、確認すべきポイント、安全な実装方法について解説します。
kintoneのファイルアップロードで発生する403エラーとは
HTTPステータスコード403は、サーバーがリクエストを受け取ったものの「アクセスを許可しない」と判断した場合に返されるエラーです。
kintoneの場合、単純なJavaScriptの文法エラーではなく、APIへのアクセス権限や送信内容が不正と判断された場合に発生することがあります。
例えば、以下のような状況では403エラーになる可能性があります。
- API実行ユーザーに権限がない
- kintone APIの利用方法が間違っている
- リクエストヘッダーや送信形式が正しくない
- アップロード処理で利用するURLや認証情報が不足している
数バイトのファイルだけ成功する場合に考えられる原因
「a」「ab」では成功するが「abc」では失敗するような場合、単純なファイルサイズ制限とは考えにくいです。
数文字程度の違いで失敗する場合は、アップロードしているデータ形式や文字コード、リクエスト生成処理に問題がある可能性があります。
例えばJavaScriptでファイル内容を文字列として扱っている場合、データ変換処理によって内容が変化することがあります。
const reader = new FileReader();
reader.onload = function(e){
console.log(e.target.result);
};
ファイルを読み込んだ後、そのデータをkintone APIへ渡す際には、BlobやBase64など適切な形式へ変換する必要があります。
kintone REST APIのファイルアップロード方法を確認する
kintoneでファイルをアップロードする場合、通常のレコード登録APIとは異なり、ファイルアップロード用のAPIを利用します。
基本的な流れは以下のようになります。
- ファイルをkintoneへアップロードする
- レスポンスからfileKeyを取得する
- レコード保存時にfileKeyを指定する
ファイルキーを取得せず、直接ファイルデータをレコードへ入れようとすると正常に処理できません。
また、APIリクエストには適切な認証情報が必要です。JavaScriptカスタマイズではログインユーザーの権限でAPIが実行されるため、そのユーザーが対象アプリやフィールドを操作できるか確認しましょう。
403エラーを確認するためのデバッグ方法
原因を特定するには、ブラウザーの開発者ツールを利用します。
Chromeなどで以下を確認します。
- Consoleに表示されるエラー内容
- Networkタブのリクエスト内容
- APIレスポンスの詳細
特にNetworkタブでは、403が発生した通信をクリックすると、kintoneから返されたエラーメッセージを確認できます。
例えば以下のような情報が原因調査に役立ちます。
| 確認項目 | 内容 |
|---|---|
| Status Code | 403になっているか |
| Request URL | 正しいAPI URLか |
| Response | kintone側のエラー内容 |
JavaScriptカスタマイズでよくある実装ミス
kintone初心者の場合、以下のようなミスが原因になることがあります。
1つ目は、ファイルオブジェクトをそのまま送信しているケースです。
// 誤った例
body: file
kintone APIでは、決められた形式でリクエストを作成する必要があります。
2つ目は、APIトークンや権限設定の問題です。管理者では動作するものの、一般ユーザーでは403になる場合があります。
実際の利用環境では、カスタマイズを行ったユーザーだけでなく、登録するユーザーの権限でもテストすることが重要です。
アップロード処理を安定させるための対策
kintoneでファイルアップロード機能を作成する場合は、以下の点を意識するとトラブルを減らせます。
- ファイル形式を事前にチェックする
- ファイルサイズ上限を確認する
- アップロード前にデータ形式を確認する
- APIレスポンスを必ず取得してエラー処理する
例えばアップロード前にファイルサイズを確認することで、不要なAPI通信を防ぐことができます。
if(file.size > limit){
alert("ファイルサイズが大きすぎます");
return;
}
また、エラー時には画面上に表示するだけでなく、console.logなどで詳細情報を残すと原因調査が容易になります。
まとめ
kintoneのJavaScriptカスタマイズでファイルアップロード時に403エラーが発生する場合、単純なファイル容量だけが原因とは限りません。
特に数バイト程度の違いで成功・失敗が分かれる場合は、ファイルデータの扱い方、APIリクエスト形式、権限設定などを確認することが重要です。
まずはブラウザーのNetworkログで実際のAPIレスポンスを確認し、kintone APIの仕様に沿ったアップロード処理になっているか確認しましょう。適切なデバッグ手順を踏むことで、プログラミング初心者でも原因を切り分けることができます。


コメント