-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathquickchart.gs
More file actions
119 lines (101 loc) · 3.24 KB
/
quickchart.gs
File metadata and controls
119 lines (101 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//Google Sheet example - https://docs.google.com/spreadsheets/d/1pcOueX2u-XdmK2nzTnhLhkYVGHlRI0fVvCgR6HS2jw0/edit?usp=sharing
function quickchart(type_of_chart,labels_raw,data_raw) {
let labels = build_labels(labels_raw),
data = build_data(data_raw),
url_base = "https://quickchart.io/chart?c=",
url_data = "";
switch (type_of_chart){
case "bar":
case "line":
case "radar":
case "pie":
case "doughnut":
url_data = "{type:'"
+ type_of_chart + "',"
+ "data:{labels:['"
+ labels + "'],datasets:"
+ data + "}}";
break;
// case "scatter":
// case "bubble":
// case "radialGauge":
// case "violin":
// case "sparkline":
// url_data = "{type:'"
// + type_of_chart + "',"
// + "datasets:"
// + data + "}";
//
// break;
}
let url = url_base + JSON.stringify(url_data);
return url.replace(/\"/g, '');
}
function build_labels(test_array) {
let index = -1,
arr_length = test_array ? test_array.length : 0,
resIndex = -1,
result = "";
while (++index < arr_length) {
let value = test_array[index];
if (value != "") {
if(index == 0){
result += value + "','";
}else{
if (index == arr_length - 1) {
result += value;
}else{
result += value + "','";
}
}
}
}
return result;
}
function build_data(test_array) {
let index_column = -1,
arr_length_column = test_array[0] ? test_array[0].length : 0,
arr_length_row = test_array ? test_array.length : 0,
resIndex_column = -1,
result = "";
while (++index_column < arr_length_column) {
let resIndex_row = -1,
index_row = -1;
while (++index_row < arr_length_row) {
let value = test_array[index_row][index_column];
if (value != "") {
if(index_row == 0){
if(index_column == 0){
result += "[{label:'" + value + "',data:[";
}else{
result += "{label:'" + value + "',data:[";
}
}else{
if (index_row == arr_length_row - 1) {
if(index_column == arr_length_column - 1){
result += value + "]}]";
}else{
result += value + "]},";
}
}else{
result += value + ",";
}
}
}
}
}
return result;
}
function buildDigraph(dataRaw) {
//dataRaw = SpreadsheetApp.getActive().getSheetByName("Opportunity tree").getSheetValues(1, 1, 13, 2); //Example of data from pivot table with 2 lines dimesions and no total aggregators.
let url = "https://quickchart.io/graphviz?graph=digraph{";
let urlData = "";
let node1 = "";
for (let i = 1; i < dataRaw.length; i++){
if (dataRaw[i][0]){
node1 = dataRaw[i][0].replace(/[^\w\s]/gi, '');
}
urlData = urlData + "\n" + node1 + "->" + dataRaw[i][1].replace(/[^\w\s]/gi, '') + ";";
}
return (url + urlData.split(' ').join('_') + "}");
}