wenxit1218様
ご返答ありがとうございます。
上記コードに置き換えを行ったところ「Uncaught TypeError: Cannot read property ‘code’ of undefined」のエラーが発生致しました。
下記にコード全文を記載致しますので、他に誤っている箇所がございましたらご指摘いただければ幸いです。
お忙しいところ大変恐れ入りますが宜しくお願いいたします。
(function() {
'use strict';
var CSVButtonEl;
kintone.events.on('app.record.index.show', function (event) {
//変数の定義
var records = event.records;
var customer, sample_table, sample, project, project_number, url, DAY, user_name = "";
//function requestで使う変数
var resp = [];
var query = "";
var app_id = '19'
//csvの配列
var csv = [];
//ボタンの有無をチェック
if (!CSVButtonEl) {
setBtn();
CSVButtonEl.addEventListener('click', toClick);
}
//ボタンエレメントの生成
function setBtn() {
var spaceEl = kintone.app.getHeaderMenuSpaceElement();
var text = document.createTextNode('CSV出力');
var btnClassName = 'sample-class2';
CSVButtonEl = document.createElement('button');
CSVButtonEl.appendChild(text);
CSVButtonEl.className = btnClassName;
spaceEl.appendChild(CSVButtonEl);
}
//クリックした際の処理
function toClick() {
getMakeCsv();
downloadFile(csv);
}
//csvファイルの作成
function getMakeCsv() {
//現在のレコード情報を取得
csv += ['顧客', 'プロジェクト名', 'プロジェクト番号', 'URL', '日付', '対応者名', '対応時間', ''];
for (var i = 0; i < records.length; i++) {
customer = records[i]["customer"]["value"];
project = records[i]["project"]["value"];
project_number = records[i]["project_number"]["value"];
url = records[i]["url"]["value"];
sample_table = records[i]["sample_table"]["value"];
if (sample_table.length !== 0) {
for (var j = 0; j < sample_table.length; j++) {
sample = sample_table[j]["value"]["sample"]["value"];
DAY = sample_table[j]["value"]["DAY"]["value"];
user_name = sample_table[j]["value"]["user_name"].value[0].code;
//会社名をキーに該当関連レコードを取得
query = 'customer = \"' + customer + '\"';
//同じ会社名のレコードを取得
resp[i] = request(app_id, query);
if (resp[i].records.length !== 0) {
for (var n = 0; n < resp[i].records.length; n++) {
csv += customer + ',' + project + ',' + project_number + ',' + url + ',' + DAY + ',' + user_name + ',' + sample + '';
}
} else {
csv += customer + ',' + ',' + ',' + url + ',' + DAY + ',' + user_name + ',' + sample + '';
}
}
} else {
csv += customer + ',' + url + ',' + ',' + ',' + '';
}
}
}
//関連レコードを取得するxmlHttpリクエスト
function request(app_id, query) {
var appUrl = kintone.api.url('/k/v1/records') + '?app=' + app_id + '&query=' + query;
//xmlHttpリクエスト
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', appUrl, false);
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlHttp.send(null);
//取得したレコードをArrayに格納
var respdata = JSON.parse(xmlHttp.responseText);
//レスポンスデータを戻り値として返す
return respdata;
}
//ダウンロード関数
function downloadFile(csv) {
//ファイル名
var filename = 'DM発送リスト_' + getTimeStamp() + '.csv';
//Blob準備
var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
var blob = new Blob([bom, csv], {type: 'text/csv'});
if (window.navigator.msSaveBlob) {
window.navigator.msSaveBlob(blob, filename);
} else {
var url = (window.URL || window.webkitURL);
var blobUrl = url.createObjectURL(blob);
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var a = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
a.href = blobUrl;
a.download = filename;
a.dispatchEvent(e);
}
}
//ファイル名に付与する日付の取得
function getTimeStamp() {
var d = new Date();
var YYYY = d.getFullYear();
var MM = (d.getMonth() + 1);
var DD = d.getDate();
var hh = d.getHours();
var mm = d.getMinutes();
if (MM < 10) { MM = '0' + MM; }
if (DD < 10) { DD = '0' + DD; }
if (hh < 10) { hh = '0' + hh; }
else if (mm < 10) { mm = '0' + mm; }
String();
return '' + YYYY + MM + DD + hh + mm;
}
});
})();