お世話になります。kintone初心者です。kintoneをRDBとして使用したいと考えており、その過程でalasqlをkintoneで使いたいのですが上手くいきません。
下記の記事を参考に同じ様にアプリを作成し、alasqlを読み込んでみましたが上手くいかず、表示が切り替わりませんでした。
https://dsp74118.blogspot.com/2020/05/kintonesql.html
デバッグしたところブラウザの開発者ツールのコンソールに次のエラーが出ていました。
"message":"認証に失敗しました。セッション認証には、「X-Requested-With」ヘッダーが必要です。"
実行したコードをコピー&ペーストしましょう
(function() {
"use strict";
kintone.events.on(['app.record.index.show'], function(event){
if(event.viewName !== 'プロジェクト別集計') return;
// Initialize kintone-rest-api-client
const client = new KintoneRestAPIClient();
var myTable;
var appId = kintone.app.getId();
var query = kintone.app.getQuery();
// APIでデータ取得
client.record.getAllRecordsWithCursor({
app: appId,
query: query,
}).then(function(response){
// kintoneのrecords(json)を、alasqlで扱える配列に変換
function convertToRows(records) {
var rows = records.map(function(record){
var keys = Object.keys(record);
var row = {};
keys.map(function(key){
switch (key) {
case '担当者氏名':
// '担当者氏名'フィールドからname(=氏名)を取り出す
row['担当者氏名'] = record[key].value[0]['name'];
break;
case '作業担当部署':
// '作業担当部署'フィールドからname(=部署名)を取り出す
row['作業担当部署'] = record[key].value[0]['name'];
break;
default:
// 他のフィールドはvalueを取り出す。数値の場合はNumberに変換
row[key] = record[key].type === 'NUMBER' ? Number(record[key].value) : record[key].value;
}
});
return row;
});
return rows;
}
var recordSet = convertToRows(response);
// sum([工数]) by alasql
var sqlResult = alasql(
"SELECT [プロジェクトコード], [作業担当部署], [担当者氏名], SUM([工数計_人月]) AS [工数計_人月] FROM ? GROUP BY [プロジェクトコード], [作業担当部署], [担当者氏名]",
[recordSet]
);
// 表に表示するカラム(alasqlの出力結果の項目名)
var columns = [
'プロジェクトコード',
'作業担当部署',
'担当者氏名',
'工数計_人月',
];
// 表のタイトルを好きにいじれるよう、別変数で定義。このサンプルではあまり意味がない。
var titles = {
プロジェクトコード: 'プロジェクトコード',
作業担当部署: '作業担当部署',
担当者氏名: '担当者氏名',
工数計_人月: '工数計',
};
// DataTables初期化
myTable = $('#myTable').DataTable({
// DataTableの設定値はお好みで。
destroy: true,
pageLength: 100,
lengthChange: false,
searching: false,
info: false,
data: sqlResult.map(function(record){
return columns.reduce(function(data, column){
data[column] = record[column];
return data;
}, {
レコード番号: record['レコード番号']
});
}),
columns: columns.map(function(column){
return {
title: this[column],
data: column
}
}, titles)
});
});
});
})();
どなたか、ご教示いただけると幸いです。