一覧画面からのCSV一括ダウンロード

一覧からCSVダウンロードを行うため、以下コードを書いたのですが、

一覧の最大表示件数が100件となっているため、100件以上のデータがある場合、

途中で切れてしまいます。

 

コードの追記によって、一覧の対象レコードを全件、一括でダウンロードするようにすることは、できないでしょうか?

(function () {
“use strict”;

// 一覧ビューの表示イベント
kintone.events.on(‘app.record.index.show’, function(events) {
var record = events.record;
if (events.viewName === ‘●企画検索用’) { // 一覧名判断
var $link = $(‘#download-csv’);
if ($link.length == 0) {
// ヘッダにリンクを作成
var $header = $(kintone.app.getHeaderMenuSpaceElement());
$link = $(‘<a id=“download-csv” href=“#”>CSVダウンロード</a>’);
$header.append($link);
}

// エスケープ
var escapeStr = function(value) {
return ‘"’ + (value? value.replace(/“/g, '”“'): ‘’) + '”';
};

if ((window.URL || window.webkitURL).createObjectURL == null) {
// サポートされていないブラウザ
return;
}

// CSVデータを作成
var csv = [];
var row = [‘キー’,‘企画コード’,‘企画年月’,‘受注冊数’];
csv.push(row);
for (var i = 0; i < events.records.length; i++ ) {
var record = events.records[i];
row = [];
row.push(escapeStr(record[‘キー’].value));
row.push(escapeStr(record[‘CD_KIKAKU_M’].value));
row.push(escapeStr(record[‘YM_KIKAKU_M’].value));
row.push(escapeStr(record[‘SU_JUCHU’].value));
csv.push(row);
}

// BOM付でダウンロード
var csvbuf = csv.map(function(e){return e.join(‘,’)}).join(‘\r’);

var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
var blob = new Blob([bom, csvbuf], { type: ‘text/csv’ });

var url = (window.URL || window.webkitURL).createObjectURL(blob);

var fileName = “download.csv”;
if (window.navigator.msSaveOrOpenBlob) {
// for IE
$link.unbind();
$link.click(function() {
var retVal = window.navigator.msSaveOrOpenBlob(blob, fileName);
});
} else {
$link.attr(‘download’, fileName);
$link.attr(‘href’, url);
}
});
})();

> kintone.events.on(‘app.record.index.show’, function(events) {

 

これですと、おっしゃるとおりevent.recordsは100件しか内包されませんので、別のアプローチをする必要があります。

 

まず、勝手ながら「任意の検索条件にヒットしているもの」のレコードを取得したいというふうに見えますので、それを満たしながら全件とるには下記のようにする必要があります。

 

[前提] すべてのデータを取得したい場合はREST API経由で取得する

  1. 現在開いている一覧画面の検索クエリの取得
    REST APIを使えば全件取得は可能ですが、まずは、検索条件をとる必要があります。
    kintone.app.getQueryCondition()
    このAPIを使えば検索条件が取得できます。

  2. それを使ってすべてのデータを取得
    上記で取得した条件をqueryに使い下記のように取得します
    https://developer.cybozu.io/hc/ja/articles/203702800-%E5%85%A8%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%8F%96%E5%BE%97%E6%96%B9%E6%B3%95

  3. CSV出力
    ここは問題がないようなので省略します

村濱様

 

コメント有り難うございます!

(返信、かなり遅くなってしまい、申し訳ございません)

 

ご連絡頂いた内容でチャレンジしてみたいと思います。

進展ありましたら、こちらに書き込みますので、今後とも宜しくお願い致します!