-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathBOTIFY_USER_LIST_PROJECTS.gs
63 lines (55 loc) · 1.79 KB
/
BOTIFY_USER_LIST_PROJECTS.gs
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
/**
* Return the projects of a user
* @param {String} apiToken Botify API token
* @param {String} username Username of the project owner
* @param {Number} nbProjects [Optional] Number of projects to get (default: 30)
* @return {Array} The list of projects.
* @customfunction
*/
function BOTIFY_USER_LIST_PROJECTS(apiToken, username, nbProjects) {
// PARAMS CHECKING
if (!apiToken) throw new Error("API Token is missing in parameters");
if (!username) throw new Error("username is missing in parameters");
if (typeof nbProjects === "undefined") nbProjects = 30;
var result = [];
// INSERT HEADERS
result.push([
'Slug',
'Name',
'Last Analysis Slug',
'Last Analysis Date',
'Last Analysis URL',
]);
// FETCHING API
var queryParams = [];
if (nbProjects) {
queryParams.push('size=' + nbProjects);
}
var qs = queryParams.length > 0 ? ('?' + queryParams.join('&')) : '';
var url = 'https://api.botify.com/v1/projects/' + username + qs;
var options = {
'method': 'get',
'headers': {
'Authorization': 'Token ' + apiToken,
'Content-type': 'application/json',
'X-Botify-Client': 'google-sheets',
},
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
if(response.error) {
throw new Error('ERROR ' + response.error.message);
}
// APPEND ROW RESULTS
var projects = response.results;
projects.forEach(function(project) {
var lastAnalysis = project.last_analysis.name;
result.push([
project.slug,
project.name,
project.last_analysis.name,
project.last_analysis.name ? project.last_analysis.name.slice(0, 4) + '/' + project.last_analysis.name.slice(4, 6) + '/' + project.last_analysis.name.slice(6, 8) : '',
project.last_analysis.url,
]);
});
return result;
}