お世話になります。藤原と申します。
Tipsの「集計したデータをCSVでダウンロードするには?」を参考に
レコード詳細画面から単一レコードのCSV出力機能を実装しました。
ChromeやFirefoxは問題なかったのですが、IEだとリンクをクリックした時に
「データの読み込みに失敗しました。」と、表示されてしまいます。
(※IEのバージョンは11です)
ただ、そのエラーを無視してダウンロードは正しく行えます。
2回目以降リンクをクリックした場合はこのエラーが表示されません。
最初にエラーが表示されてしまう原因は何なのでしょうか。
下記の「★」の部分がTipsのコードを変更した点です。
(function () {
“use strict”;
// 一覧ビューの表示イベント→レコード詳細の表示イベントに変更
kintone.events.on(‘app.record.detail.show’, function(event) {
var $link = $(‘#download-csv’);
if ($link.length == 0) {
// ★リンクの置き場所を一覧画面のメニュースペース→詳細画面のフォーム内スペースに変更
var $space = $(kintone.app.record.getSpaceElement(‘csv_out’));
$link = $(‘<a id=“download-csv” href=“#”>CSVでダウンロード</a>’);
$space.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);
// ★一行のみ出力するように変更
var record = event.record;
row = [];
row.push(escapeStr(record['レコード番号'].value));
row.push(escapeStr(record['タイトル'].value));
row.push(escapeStr(record['内容'].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);
}
});
})();
恐れいりますが、ご教示いただけますと大変ありがたいです。