i have datatables + highcharts and now don't working and i want replace sheets api v3 to v4
codepen.io/intprotest/pen/ewQJrK?editors=1010 https://sheets.googleapis.com/v4/spreadsheets/1f8Ji80Qv3PX3mcUbHs5MeVHmTdC1lxBoPu72XInckaA/values/1!A2:Z?alt=json&key=AIzaSyB5FsZ-XKEpJVPSmTbQhJPNMOIPYO8VmhU
$(document).ready(function() {
var results = [];
var categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var url = "https://spreadsheets.google.com/feeds/list/1f8Ji80Qv3PX3mcUbHs5MeVHmTdC1lxBoPu72XInckaA/od6/public/values?alt=json";
var jqxhr = $.getJSON(url, function() {
console.log("success");
})
.done(function(data) {
console.log("second success");
var entry = data.feed.entry;
var rowCount = 0; //row counter
var rowData = []; //data array for each row
console.log(data)
$(entry).each(function() {
if (rowCount % 2 === 0) {
// if rowCount mod 2 is 0 then start new row data
rowData = [
this.gsx$_cn6ca.$t,
this.gsx$company.$t,
this.gsx$jan.$t,
this.gsx$feb.$t,
this.gsx$mar.$t,
this.gsx$apr.$t,
this.gsx$may.$t,
this.gsx$jun.$t,
this.gsx$jul.$t,
this.gsx$aug.$t,
this.gsx$sep.$t,
this.gsx$oct.$t,
this.gsx$nov.$t,
this.gsx$dec.$t,
];
} else {
// Otherwise append second row to the first
rowData = rowData.concat([
this.gsx$_cn6ca.$t,
this.gsx$company.$t,
this.gsx$jan.$t,
this.gsx$feb.$t,
this.gsx$mar.$t,
this.gsx$apr.$t,
this.gsx$may.$t,
this.gsx$jun.$t,
this.gsx$jul.$t,
this.gsx$aug.$t,
this.gsx$sep.$t,
this.gsx$oct.$t,
this.gsx$nov.$t,
this.gsx$dec.$t
])
// and push onto the row data
results.push(rowData);
}
rowCount++;
});
var table = $('#selection-datatable').DataTable({
data: results,
deferRender: true,
"processing": true,
paging: false,
columnDefs: [{
className: "details-control",
"targets": [0]
}]
});
function format(title) {
return '<div class="slider" name>' +
'<table class=table table hover border="0" class="details-table">' +
'<thead> ' +
'<td>' + [title[14]].join(', ') + '</td>' +
'<td>' + [title[15]].join(', ') + '</td>' +
'<td>' + [title[16]].join(', ') + '</td>' +
'<td>' + [title[17]].join(', ') + '</td>' +
'<td>' + [title[18]].join(', ') + '</td>' +
'<td>' + [title[19]].join(', ') + '</td>' +
'<td>' + [title[20]].join(', ') + '</td>' +
'<td>' + [title[21]].join(', ') + '</td>' +
'<td>' + [title[22]].join(', ') + '</td>' +
'<td>' + [title[23]].join(', ') + '</td>' +
'<td>' + [title[24]].join(', ') + '</td>' +
'<td>' + [title[25]].join(', ') + '</td>' +
'<td>' + [title[26]].join(', ') + '</td>' +
'<td>' + [title[27]].join(', ') + '</td>' +
'</thead> ' +
'<div id="chart' + title[14] + '"></div>' +
'</div>'
}
$('#selection-datatable tbody').on('click', 'td.details-control', function() {
var tr = $(this).closest('tr');
var row = table.row(tr);
if (row.child.isShown()) {
// This row is already open - close it
$('div.slider', row.child()).slideUp(function() {
row.child.hide();
tr.removeClass('shown');
});
} else {
// Open this row
row.child(format(row.data()), 'no-padding').show();
tr.addClass('shown');
createChart('chart' + row.data()[14], row.data().slice(16));
$('div.slider', row.child()).slideDown();
}
});
});
function createChart(container, data) {
Highcharts.chart(container, {
series: [{
data: (function() {
data.forEach(function(el, i) {
data[i] = Number(el);
});
return data;
})()
}],
chart: {
zoomType: 'xy',
type: 'area',
backgroundColor: '#253138',
},
plotOptions: {
series: { neWidth: 2, fillColor: "#0099cc", lineColor: "#f7897b",
marker: { enabled: true, symbol: 'circle', radius: 4,
states: { hover: { enabled: true, illColor: '#000000' } } }
} },
title: { style: { color: '#E0E0E3', fontSize: '20px' } },
yAxis: { labels: { style: { color: 'white' } }},
legend: { itemStyle: { color: 'white' }, },
xAxis: {
categories: categories,
labels: { style: { color: 'white' } }
},
})
}
});
I replace the current URL
in the script and update the URL variable
with the link provided above. I also modify your forEach
in the script and alter the values of the entry
variable to match the response of your URL JSON
.
You can read more about Google sheets v3 to v4 answered by someone here in our community.
$(document).ready(function() {
var results = [];
var categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
// Change your previous url to your current url.
var url = "https://sheets.googleapis.com/v4/spreadsheets/1f8Ji80Qv3PX3mcUbHs5MeVHmTdC1lxBoPu72XInckaA/values/1!A2:Z?alt=json&key=AIzaSyB5FsZ-XKEpJVPSmTbQhJPNMOIPYO8VmhU"
var jqxhr = $.getJSON(url, function() {
console.log("success");
})
.done(function(data) {
console.log("second success");
console.log(data)
// Matching the Data response from your Json.
var entry = data.values;
var rowCount = 0; //row counter
var rowData = []; //data array for each row
console.log(entry)
$(entry).each(function() {
if (rowCount % 2 === 0) {
// if rowCount mod 2 is 0 then start new row data
rowData = [
// Edited your forEach to make things work.
entry[rowCount][0],
entry[rowCount][1],
entry[rowCount][2],
entry[rowCount][3],
entry[rowCount][4],
entry[rowCount][5],
entry[rowCount][6],
entry[rowCount][7],
entry[rowCount][8],
entry[rowCount][9],
entry[rowCount][10],
entry[rowCount][11],
entry[rowCount][12],
entry[rowCount][13]
];
} else {
// Otherwise append second row to the first
rowData = rowData.concat([
entry[rowCount][0],
entry[rowCount][1],
entry[rowCount][2],
entry[rowCount][3],
entry[rowCount][4],
entry[rowCount][5],
entry[rowCount][6],
entry[rowCount][7],
entry[rowCount][8],
entry[rowCount][9],
entry[rowCount][10],
entry[rowCount][11],
entry[rowCount][12],
entry[rowCount][13]
])
// and push onto the row data
results.push(rowData);
}
rowCount++;
});
console.log(results)
var table = $('#selection-datatable').DataTable({
data: results,
deferRender: true,
"processing": true,
paging: false,
columnDefs: [{
className: "details-control",
"targets": [0]
}]
});
function format(title) {
return '<div class="slider" name>' +
'<table class=table table hover border="0" class="details-table">' +
'<thead> ' +
'<td>' + [title[14]].join(', ') + '</td>' +
'<td>' + [title[15]].join(', ') + '</td>' +
'<td>' + [title[16]].join(', ') + '</td>' +
'<td>' + [title[17]].join(', ') + '</td>' +
'<td>' + [title[18]].join(', ') + '</td>' +
'<td>' + [title[19]].join(', ') + '</td>' +
'<td>' + [title[20]].join(', ') + '</td>' +
'<td>' + [title[21]].join(', ') + '</td>' +
'<td>' + [title[22]].join(', ') + '</td>' +
'<td>' + [title[23]].join(', ') + '</td>' +
'<td>' + [title[24]].join(', ') + '</td>' +
'<td>' + [title[25]].join(', ') + '</td>' +
'<td>' + [title[26]].join(', ') + '</td>' +
'<td>' + [title[27]].join(', ') + '</td>' +
'</thead> ' +
'<div id="chart' + title[14] + '"></div>' +
'</div>'
}
$('#selection-datatable tbody').on('click', 'td.details-control', function() {
var tr = $(this).closest('tr');
var row = table.row(tr);
if (row.child.isShown()) {
// This row is already open - close it
$('div.slider', row.child()).slideUp(function() {
row.child.hide();
tr.removeClass('shown');
});
} else {
// Open this row
row.child(format(row.data()), 'no-padding').show();
tr.addClass('shown');
createChart('chart' + row.data()[14], row.data().slice(16));
$('div.slider', row.child()).slideDown();
}
});
});
function createChart(container, data) {
Highcharts.chart(container, {
series: [{
data: (function() {
data.forEach(function(el, i) {
data[i] = Number(el);
});
return data;
})()
}],
chart: {
zoomType: 'xy',
type: 'area',
backgroundColor: '#253138',
},
plotOptions: {
series: { neWidth: 2, fillColor: "#0099cc", lineColor: "#f7897b",
marker: { enabled: true, symbol: 'circle', radius: 4,
states: { hover: { enabled: true, illColor: '#000000' } } }
} },
title: { style: { color: '#E0E0E3', fontSize: '20px' } },
yAxis: { labels: { style: { color: 'white' } }},
legend: { itemStyle: { color: 'white' }, },
xAxis: {
categories: categories,
labels: { style: { color: 'white' } }
},
})
}
});
HTML table output:
# | Company | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | |
3 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | |
5 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | |
7 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | |
9 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | |
11 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | |
13 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | |
15 | 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 1812 | |
17 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 2212 |