新規投稿
フォローする

kintoneレコード一覧から複数ファイルダウンロード

kintoneレコード一覧画面において、カスタマイズビューを使ってチェックボックスを表示させ、チェックボックス[ON]の複数レコードの添付ファイルを一括ダウンロードする機能をつけたいと思っています。

検証の結果、以下のことはできました。
 ①カスタマイズビューを使ってチェックボックスを表示する
 ②チェックボックス[ON]のレコードの添付ファイルキーを取得する
 ③ファイルキーからファイル情報を取得する

ですが、以下のことがまだできません。
 ④ファイル情報からファイルをダウンロードできるようにする
 ⑤複数ファイルをzipに固める(→他のJavaScriptを使う予定だが…)

④と⑤について、解決するための情報をご教示いただけると有難いです。

1

3件のコメント

Avatar
大内貴志

こんにちは。
大内@cstapです。

④についてですが、
kintoneからのファイルの取得はREST APIのを利用して行うことになりますが、JavaScript APIのkintone REST API リクエストは、これに対応していません。
また、⑤で複数ファイルをひとつに圧縮してまとめたいといった要望もあるのでしたら、外部からREST APIを投げるサーバー/環境を別途用意しておき、kintoneに設置したJavaScriptから対象のファイルIDを通知してバッチ処理するといった方法が良いように思います。

●参考
- REST API: ファイルのダウンロード
https://cybozudev.zendesk.com/hc/ja/articles/202166180-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89

0
Avatar
大内貴志

たびたびすみません。
大内@cstapです。

④について、別法です。
既にご存じかも知れせんが、XMLHttpRequestでREST APIを同期処理する方法のサンプルが紹介されていますのでお知らせしておきます。

●自動採番して、レコード登録する
https://cybozudev.zendesk.com/hc/ja/articles/202640930-%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA%E3%81%97%E3%81%A6-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B

●プロセス管理を使って作業完了日と担当者を記録する
https://cybozudev.zendesk.com/hc/ja/articles/202341844-%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%AE%A1%E7%90%86%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E4%BD%9C%E6%A5%AD%E5%AE%8C%E4%BA%86%E6%97%A5%E3%81%A8%E6%8B%85%E5%BD%93%E8%80%85%E3%82%92%E8%A8%98%E9%8C%B2%E3%81%99%E3%82%8B

XMLHttpRequestでfile.jsonを叩いたときの挙動を検証した事はないのですが、試してみる価値はあるかも知れません。

0
Avatar
開発者

大内さん

ご回答ありがとうございます。
以下のようなコードを用いて、処理を書くと、"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);

0
サインインしてコメントを残してください。