お世話になっております。長文で失礼しますが
一覧表上にボタンを設けて情報をファイル出力することには成功したのですが、これを詳細画面上にボタンを配置して同じようなことをしてみても途中で処理が停止します。
具体的には以下に示す画面で
該当する見積書の明細を含めた次のような結果を得たかったのですが、
ID,見積日,取引先コード,取引先名,合計金額,商品コード,商品名,単価,数量,小計,備考
1,2016/8/18,1985,ぬるぽ,6000,04522285402912,トマト,2000,1,2000,
1,2016/8/18,1985,ぬるぽ,6000,VAPORS/B,きゅうり,800,5,4000,
下記のコードの30行目で停止します。どうやらrecords.lengthが一覧ではとれるのに詳細画面では取得できないようです。
そもそも詳細画面ではメニューにファイル出力がないので、このような機能を持たせることができないのでしょうか?もし上手い解決方法をご教示いただければ幸いです。
(function () {
“use strict”;
// 詳細ビューの表示イベント
kintone.events.on(‘app.record.detail.show’, function(events) {
// メニュ右側の空白部分にボタンを設置
var myIndexButton = document.createElement(‘button’);
myIndexButton.id = ‘my_index_button’;
myIndexButton.innerHTML = ‘見積書’;
myIndexButton.onclick = ExportFile;
kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
function ExportFile() {
// エスケープ
var escapeStr = function(value) {
return ‘"’ + (value? value.replace(/“/g, '”“'): ‘’) + '”';
};
if ((window.URL || window.webkitURL).createObjectURL == null) {
// サポートされていないブラウザ
return;
}
// CSVデータを作成
var csv = [];
var row = [ID,見積日,取引先コード,取引先名,合計金額,商品コード,商品名,単価,数量,小計,備考];
csv.push(row);
window.alert(‘Passed01’); //29行目←←←←←←←←ここまでは動作する
window.alert(String(records.length)); //30行目←←←←←←←←ここで失敗する。records.lengthが上手く取れない様子
// for (var i = 0; i < events.records.length; i++ ) {
for (var i = 0; i < records.length; i++ ) {
var record = events.records[i];
row = [];
row.push(escapeStr(record[‘レコード番号’].value));
row.push(escapeStr(record[‘見積日’].value));
row.push(escapeStr(record[‘取引先名’].value));
csv.push(row);
}
…以下略