kintoneレコード一覧画面において、カスタマイズビューを使ってチェックボックスを表示させ、チェックボックス[ON]の複数レコードの添付ファイルを一括ダウンロードする機能をつけたいと思っています。
検証の結果、以下のことはできました。
①カスタマイズビューを使ってチェックボックスを表示する
②チェックボックス[ON]のレコードの添付ファイルキーを取得する
③ファイルキーからファイル情報を取得する
ですが、以下のことがまだできません。
④ファイル情報からファイルをダウンロードできるようにする
⑤複数ファイルをzipに固める(→他のJavaScriptを使う予定だが…)
④と⑤について、解決するための情報をご教示いただけると有難いです。
こんにちは。
大内@cstapです。
④についてですが、
kintoneからのファイルの取得はREST APIのを利用して行うことになりますが、JavaScript APIのkintone REST API リクエストは、これに対応していません。
また、⑤で複数ファイルをひとつに圧縮してまとめたいといった要望もあるのでしたら、外部からREST APIを投げるサーバー/環境を別途用意しておき、kintoneに設置したJavaScriptから対象のファイルIDを通知してバッチ処理するといった方法が良いように思います。
●参考
大内さん
ご回答ありがとうございます。
以下のようなコードを用いて、処理を書くと、"xhr.response"が文字化け?を起こして、画像ファイル等はファイルの中身が壊れます。(テキストファイルであれば正常に動作する)
>JavaScript APIのkintone REST API リクエストは、これに対応していません。
上記は、私の書いたコードだとうまくいかないということでしょうか?
var url = kintone.api.url(‘/k/v1/file’) + ‘? REQUEST_TOKEN =’ + kintone.getRequestToken() + ‘&fileKey=’ + filekey;
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, url, false);
xhr.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);
xhr.setRequestHeader(“Accept-Charset”, “x-user-defined”);
xhr.onreadystatechange = function(event) {
if ((xhr.readyState === 4) && (xhr.status === 200)) {
console.log(xhr.response);
var blob = new Blob([xhr.response], {type: contentType});
var url = window.URL || window.webkitURL;
var blobUrl = url.createObjectURL(blob);
kintone.app.getHeaderMenuSpaceElement().innerHTML = ‘<a href="’ + blobUrl + ‘" download="’ + fileName + ‘">ダウンロード</a>’;
}
};
xhr.send(null);