Created
November 26, 2018 14:14
-
-
Save leonardonsantos/8d2edc844615731424f7f08f92e1dce4 to your computer and use it in GitHub Desktop.
Google Spreadsheets (sheets) script to get data from Asana API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// returns tagId | |
function asanaTagByName(tagName, token) { | |
var url = "https://app.asana.com/api/1.0/workspaces/2653227806782/typeahead?type=tag&query=" + encodeURIComponent(tagName); | |
var options = { | |
"muteHttpExceptions": true, | |
"method": "get", | |
"headers": { | |
"Authorization": "Bearer " + token | |
} | |
}; | |
var response = UrlFetchApp.fetch(url, options); | |
var dataAll = JSON.parse(response.getContentText()); | |
var dataSet = dataAll; | |
return dataSet.data[0].id; | |
} | |
function asanaTasksByTagId(tag, token, projectId) { | |
var url = "https://app.asana.com/api/1.0/tags/" + tag + "/tasks?opt_expand=tags,custom_fields,completed,completed_at,assignee,memberships"; | |
var options = { | |
"muteHttpExceptions": true, | |
"method": "get", | |
"headers": { | |
"Authorization": "Bearer " + token | |
} | |
}; | |
var response = UrlFetchApp.fetch(url, options); | |
var dataAll = JSON.parse(response.getContentText()); | |
var dataSet = dataAll; | |
var rows = [], | |
data; | |
//header | |
rows.push(["ID","NAME","COMPLETED", "Planejamento", "Tipo:", "Esforço", "Sprint", "TAG TYPE", "Assignee", "Completed At", "Section"]); | |
for (i = 0; i < dataSet.data.length; i++) { | |
data = dataSet.data[i]; | |
var planejamento = undefined; | |
var tipo = undefined; | |
var esforco = undefined; | |
var sprint = undefined; | |
// TODO: dynamically deal with custom fields | |
for (j = 0; j < data.custom_fields.length; j++) { | |
var cf = data.custom_fields[j]; | |
if (cf.name === "Planejamento" && undefined != cf.enum_value) { | |
planejamento = cf.enum_value.name | |
} | |
if (cf.name === "Tipo:" && undefined != cf.enum_value) { | |
tipo = cf.enum_value.name | |
} | |
if (cf.name === "Esforço") { | |
esforco = cf.number_value | |
} | |
if (cf.name === "Sprint" && undefined != cf.enum_value) { | |
sprint = cf.enum_value.name | |
} | |
} | |
var tagType = undefined; | |
for (j = 0; j < data.tags.length; j++) { | |
var name = data.tags[j].name; | |
if (name === "CRM:Other" || name === "CRM:Front" || name === "CRM:Spark" || name === "CRM:API") { | |
tagType = name; | |
} | |
} | |
var assignee = undefined; | |
if (undefined != data.assignee) { | |
assignee = data.assignee.name | |
} | |
var section = undefined; | |
if (undefined === projectId && data.memberships.length > 0) { | |
if (undefined != data.memberships[0].section) { | |
section = data.memberships[0].section.name; | |
} | |
} else { | |
for (j = 0; j < data.memberships.length; j++) { | |
var m = data.memberships[j]; | |
if (undefined != m.project && m.project.id == projectId && undefined != m.section) { | |
section = m.section.name; | |
} | |
} | |
} | |
rows.push([data.id, data.name,data.completed, planejamento, tipo, esforco, sprint, tagType, assignee, data.completed_at, section]); | |
} | |
return rows; | |
} | |
function asanaTasksByTagName(tagName, token, projectId) { | |
var tagId = asanaTagByName(tagName, token); | |
return asanaTasksByTagId(tagId, token, projectId); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You should use in sheet just like this: