-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathBOTIFY_PROJECT_LIST_ANALYSES.gs
69 lines (61 loc) · 1.95 KB
/
BOTIFY_PROJECT_LIST_ANALYSES.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
64
65
66
67
68
69
/**
* Return the latest analyses of a given project.
* @param {String} apiToken Botify API token
* @param {String} username Username of the project owner
* @param {String} projectSlug Project's slug
* @param {Number} nbAnalyses [Optional] Number of analyses to get (default: 20)
* @param {Boolean} onlySuccess [Optional] List only successfully finished analyses (default: true)
* @return {Array} The list of analyses.
* @customfunction
*/
function BOTIFY_PROJECT_LIST_ANALYSES(apiToken, username, projectSlug, nbAnalyses, onlySuccess) {
// PARAMS CHECKING
if (!apiToken) throw new Error("API Token is missing in parameters");
if (!username) throw new Error("username is missing in parameters");
if (!projectSlug) throw new Error("projectSlug is missing in parameters");
if (typeof nbAnalyses === "undefined") nbAnalyses = 20;
if (typeof onlySuccess === "undefined") onlySuccess = true;
var result = [];
// INSERT HEADERS
result.push([
'slug',
'name',
'status',
'nbUrls',
'report url',
]);
// FETCHING API
var queryParams = [];
if (nbAnalyses) {
queryParams.push('size=' + nbAnalyses);
}
if (onlySuccess) {
queryParams.push('only_success=true');
}
var qs = queryParams.length > 0 ? ('?' + queryParams.join('&')) : '';
var url = 'https://api.botify.com/v1/analyses/' + username + '/' + projectSlug + 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 analyses = response.results;
analyses.forEach(function(analysis) {
result.push([
analysis.slug,
analysis.name,
analysis.status,
analysis.urls_done,
analysis.url
]);
});
return result;
}