【kintone】添付一括ダウンロード時の名前を変更したい

背景・実現したいこと

kintoneアプリに保存されている添付ファイルを一括ダウンロードするため、下記「利用したソースコード」のページを参考にボタンを追加しました。

 

ダウンロードした際に添付ファイルの名前は、kintoneアプリに登録された時のファイル名そのままになっていますが、ダウンロードした時にどのレコードの分なのかを分かるようにしたいです。

例えば、添付ファイルの名前の最初にレコード番号を追加するなど。

 

何かいい方法がありましたら、ご教示いただけますと幸いです。

 

利用したソースコード

kintoneの添付ファイルをJSZipで一括ダウンロードしよう

NKI様

    //非同期で1ファイルダウンロードし、zipへ組み込みする関数
    function downloadFile(zip, url, filename) {
        return new kintone.Promise(function(resolve, reject) {
            // getbinarycontent は 非同期でURL からファイルを取得するAPI
            // JSZIP util APIを利用
            JSZipUtils.getBinaryContent(url, function(err, data) {
                if (err) {
                    reject(err);
                }
                zip.file(filename, data, {binary: true});
                resolve(data);
            });
        });
    }

このfunctionで,ダウンロードした添付ファイルにfilenameをつけてzipにいれているようです.

zip.file(filename, data, {binary: true});

ここのfilenameをいじればうまくいきそうなので,NKI様のコードをたどっていただければと思います.
(NKI様のコードがどうなっているのかわからないので具体的にはちょっと書きづらいです)

NKI さん

利用したソースコードをもとに検証してみましたが、以下関数内の処理を修正するとファイル名を変更できました。

元のコード(kintoneの添付ファイルをJSZipで一括ダウンロードしよう

修正後

function getFileKeys(json) {
  var keys = [];
  for (var i = 0; i < json.records.length; i++) {
    var record = json.records[i];
    var filetype = record[fieldCode];
    // 複数添付ファイルが存在する場合あり
    for (var j = 0; j < filetype.value.length; j++) {
      var file = filetype.value[j];
      // ファイル名を変更:{レコードID}-{インデックス}-{元のファイル名}
      file.name = [record.$id.value, j, file.name].join('-');
      keys.push(file);
    }
  }
  return keys;
}

以上になります。ご参考になれば幸いです。

TO様 川村様

コメントいただきまして、ありがとうございます。

初心者でTO様のコメントでは自分で修正できず、川村様のコードを元に修正しました。

無事ファイル名にレコード番号が追加され、ダウンロード後でも画像とレコードの紐づけができました。

本当にありがとうございました。

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。