カスタマイズビューを使ってアプリのデータを一覧表示させるのですが、その際、それぞれのレコードに割り当てた画像をサムネイルとして一覧上に表示させることを考えています。
こちらのチュートリアルを参考に、レコードIDを決め打ちでサムネイル画像の表示をすることはできました。
しかし、決め打ちではなく、ループの処理の中で、一覧を出力し、それぞれのレコードに割り当てた画像をサムネイルで表示させようとすると、エラーとなりうまくいきいません。
デバッグしたところ、
var filekey = record.attachment.value[0].fileKey;
のところで、filekey の取得はできているのですが、その後
Uncaught ReferenceError: fileKey is not defined
とのエラーが返ってきます。
何かトンチンカンなことをやっているようでしたらご指摘いただきたいのですが、よろしくお願いいたします。
以下ソースです。
(function () {
“use strict”;
var test;
// レコード一覧の表示時に発行日が本日であれば文字色、フィールドの背景色を変更する
kintone.events.on(‘app.record.index.show’, function (event) {
var records = event.records;
for (var i = 0; i < records.length; i++) {
var record = records[i];
if (record.attachment.value.length != 0) {
var filekey = record.attachment.value[0].fileKey;
var title = record.title.value;
filedownload(title,fileKey);
}
}
});
//ファイルダウンロード&リンク生成
function filedownload(title,filekey){
var apiurl = ‘/k/v1/file.json?fileKey=’ + filekey;
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, apiurl, true);
xhr.setRequestHeader(‘X-Requested-With’ , ‘XMLHttpRequest’); //これが無いとIE,FFがNG
xhr.responseType = “blob”;
var blob = xhr.responseType;
xhr.onload = function() {
//blobからURL生成
var blob = xhr.response;
var url = window.URL || window.webkitURL;
var image = url.createObjectURL(blob);
//タイトルの要素生成
var youso = document.createElement(“b”);
youso.innerHTML = “タイトル:” + escapeHtml(title);
$(youso).appendTo(“#title”);
$(‘<a><img src="’ + image + ‘" width=“10%” height=“10%” /></a>’).appendTo(“#file”);
};
xhr.send();
}
//エスケープ用関数
function escapeHtml(str) {
str = str.replace(/&/g, ‘&’);
str = str.replace(/</g, ‘<’);
str = str.replace(/>/g, ‘>’);
str = str.replace(/"/g, ‘"’);
str = str.replace(/'/g, ‘'’);
return str;
};
})();