kintoneを使っていると、「外部サービスと連携したい」「APIを呼び出したい」と思う場面が出てきます。
そんな時に活躍するのが kintone.proxy()
という機能です。
非常に便利なこの機能ですが、「文字列しか扱えない」という制限があることをご存知でしょうか?
本記事ではその制約と、Base64を使ってファイルも扱えるようにする方法を、具体例付きで解説します。
お知らせ①
🌟無料&登録不要でプラグインのお試しが可能!🌟
kintoneユーザーの皆さん!
エムザスのkintoneプラグインはもう試しましたか?🤔
エムザスでは以下のようなプラグインを開発しています!👇
デモ環境で、ほとんどの機能が今すぐお試しいただけます✨
さらに、お客様のドメインで無料で3ヶ月間、すべての機能を試すこともできます!🎉
それでは、本題に入ります!
1. kintone proxyとは?
kintone proxyは、kintoneアプリにJavaScriptを組み込むことで、外部のREST APIと通信できるようにする関数です。
書き方は非常にシンプルで、以下のように使います。
kintone.proxy(URL, METHOD, HEADERS, BODY, CALLBACK);
サーバーを経由するため、CORS制限を回避して外部APIと通信できるのが最大のメリットです。
2. kintone proxyの主な特徴
✅ CORS制限の回避
ブラウザのクロスオリジン制限により通常は別ドメインへの通信が制限されますが、kintone.proxyならkintoneのサーバーを経由して通信できるため、CORSの問題を回避できます。
✅ セキュリティ面の強化
APIキーやトークンなどの機密情報をクライアント側に露出せずに扱えるため、セキュリティを確保した連携が可能です。
✅ 多様なHTTPメソッドに対応
GETだけでなく、POST、PUT、DELETEなどのメソッドに対応。多くのREST APIとやり取りできます。
3. 【注意点】文字列しか扱えない制限に注意!
便利なkintone proxyですが、大きな制限があります。
🔒 「送受信できるのは文字列だけ」
- バイナリ形式(画像、PDF、CSVなど)をそのまま送ることはできない
multipart/form-data
などのフォーム形式にも非対応
つまり、ファイルアップロード・ダウンロードのような処理は、文字列変換が必要になるということです。
4. Base64でファイルも扱える!
この制限を回避するために使えるのが Base64エンコードです。
🔄 Base64とは?
- バイナリデータをテキストデータに変換する方法
- 画像やPDFも、Base64化すれば文字列として送受信可能
つまり、kintone.proxyではBase64を使うことで「ファイルも扱える」ようになるというわけです。
5. 【例付き】Base64でファイルを送受信する方法
📤 例1:画像をBase64に変換して外部APIにアップロード
ステップ1:ファイルをBase64に変換する関数
function fileToBase64(file, callback) {
const reader = new FileReader();
reader.onload = function () {
const base64 = reader.result.split(',')[1]; // Base64部分だけ抽出
callback(base64);
};
reader.readAsDataURL(file); // ファイルをData URIで読み込む
}
ステップ2:Base64文字列をAPIに送信する
fileToBase64(file, function(base64Data) {
const body = JSON.stringify({
filename: file.name,
content: base64Data,
mimetype: file.type
});
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
};
kintone.proxy('https://api.example.com/upload', 'POST', headers, body, function(responseBody, status, headers) {
console.log('アップロード成功:', responseBody);
});
});
📥 例2:APIからBase64形式のファイルを受け取ってkintoneに保存
ステップ1:Base64 → Blob に変換
function base64ToBlob(base64, mime) {
const binary = atob(base64);
const array = [];
for (let i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], { type: mime });
}
ステップ2:ファイルAPIでkintoneにアップロード
kintone.proxy('https://api.example.com/download', 'GET', {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}, {}, function(body, status, headers) {
const res = JSON.parse(body);
const blob = base64ToBlob(res.content, res.mimetype);
const formData = new FormData();
formData.append('file', blob, res.filename);
kintone.api(kintone.api.url('/k/v1/file', true), 'POST', formData, function(resp) {
console.log('kintoneファイル保存成功', resp.fileKey);
});
});
6. まとめ
kintone.proxy()
は、CORS回避やセキュアな外部API連携ができる便利な機能- ただし、「文字列しか使えない」制限があるため、バイナリ通信にはBase64が必須
- Base64を使えば、画像やPDFなどのファイルも安全に送受信できる
kintoneと外部サービスをつなげて業務を自動化したい方には、この手法を覚えておくことがとても重要です!