背景・実現したいこと
複数の一覧を持つアプリの一覧印刷をするとき、印刷する一覧の名前をヘッダーに表示したいです。
下記のソースコードを用いて
if(e.viewName !== ‘名簿’)
のように一覧の名前を条件にヘッダーを変更することはできるようになりましたが、
この場合一覧を追加したらその通度ソースを変更しなければいけません。
ソースコードに一覧の名前を直接入力しなくてもヘッダーに表示させ、
かつ一覧を別の一覧に切り替えたときヘッダーの表示名も自動で変更させるようにしたいです。
ご教授いただけますよう
よろしくお願いいたします。
利用したソースコード
(function() {
"use strict";
kintone.events.on("app.record.index.show", function(e) {
if(e.viewName !== '名簿') return;
var appId = kintone.app.getId();
var viewName = e.viewName;
var query = kintone.app.getQueryCondition();
var query2 = kintone.app.getQuery();
var sort = query2.split(/by|limit/);
//列名取得
kintone.api(kintone.api.url('/k/v1/app/views', true), 'GET', {app: appId}, function(resp) {
var fields = resp.views[viewName].fields;
// 全件取得関数
function fetch(opt_offset, opt_records) {
var offset = opt_offset || 0;
var records = opt_records || [];
var params = {
app: appId,
query: query + ' order by' + sort[1] + ' limit 500 offset ' + offset,
fields: fields
};
return kintone.api('/k/v1/records', 'GET', params).then(function(resp) {
records = records.concat(resp.records);
if (resp.records.length === 500) {
return fetch(offset + 500, records);
}
return records;
});
}
//関数実行、{列名:値}になるよう組み替える
fetch().then(function(resp){
var records = resp;
var data = [];
for(var i = 0; i < records.length; i++){
var record = {};
for(var key in records[i]){
if(records[i][key].value === null){
records[i][key].value = ''; //nullを文字として表示しないようにする
}
record[key] = records[i][key].value;
}
data.push(record);
}
var print_button = document.createElement('button');
print_button.id = 'pb';
print_button.innerHTML = '印刷';
print_button.onclick = function(){
printJS({
printable: data,
properties: fields,
type: 'json',
//見出し
header: '名簿',
headerStyle: 'font-weight: 100; color: #3498db;text-align: center',
gridHeaderStyle: 'font-size: 11px;background-coler:#3498db; border: 1px solid #3498db;',
gridStyle: 'font-size: 11px; border: 1px solid #3498db; margin-bottom: -1px; white-space: nowrap;',
repeatTableHeader: false
});
};
if (document.getElementById('pb') !== null) {
var element = document.getElementById("pb");
element.parentNode.removeChild(element);
}
kintone.app.getHeaderMenuSpaceElement().appendChild(print_button);
return;
});
});
});
})();