Я использую GitHub api для получения проблем в формате JSON и использую graphql для добавления данных в файл .csv.
Это код ---
const graphql = require("graphql-request");
const json2csv = require("json2csv");
const fs = require("fs");
const argv = require("minimist")(process.argv.slice(2));
const fileName = argv.filename || "issues.csv";
const fields = [
{
value: "node.title",
label: "Issue Title",
},
{
value: "node.author.login",
label: "Issue Author"
},
{
value: "node.state",
label: "Issue Status"
},
{
value: "node.milestone.title",
label: "Sprint"
},
{
value: "node.labels.edges.node.name",
label: "Tower"
},
{
value: "node.bodyText",
label: "Components"
},
{
value: "node.comments.edges.node.bodyText",
label: "Review Comments"
},
{
value: "node.comments.edges.node.author.login",
label: "Comment Author"
},
{
value: "node.comments.edges.node.createdAt",
label: "Date"
},
{
value: "node.url",
label: "Issue URL"
}
];
const client = new graphql.GraphQLClient("https://api.github.com/graphql", {
headers: {
Authorization: `Bearer ${argv.token}`
}
});
const query = `{
repository(owner: "${argv.owner}", name: "${argv.repo}") {
issues(last: 100) {
edges {
node {
title
number
state
author {
login
}
bodyText
url
milestone {
id
title
}
labels(first: 10) {
edges {
node {
name
}
}
}
comments(last: 5) {
edges {
node {
author {
avatarUrl
login
resourcePath
url
}
bodyText
createdAt
}
}
}
}
}
}
}
}`;
function writeCsvFile(csv) {
fs.writeFile(fileName, csv, function (err) {
if (err) throw err;
console.log(`${fileName} file saved`);
});
}
client
.request(query)
.then(data => {
const json2csvConfig = {
data: data.repository.issues.edges,
fields: fields,
includeEmptyRows: true,
unwindPath: ["node.labels.edges", "node.comments.edges"]
};
json2csv(json2csvConfig, (err, csvString) => {
writeCsvFile(csvString.replace(/[‘’]/g, `'`).replace(/[“”]/g, '"'));
});
})
.catch(error => console.error(error));
Я хочу изменить раскрутку ярлыков, чтобы при наличии нескольких ярлыков, помеченных в одном выпуске, они входили в одну ячейку.CSV-файл, а не новый столбец, поскольку он добавляет одну и ту же проблему несколько раз.
Данные JSON выглядят следующим образом - как разматывать / агрегировать это?
Как разматывать / агрегировать следующие
"labels": [
{
"id": 1257724245,
"node_id": "MDU6TGFiZWwxMjU3NzI0MjQ1",
"url": "https://api.github.com/repos/testkamal/SalesforcePOC/labels/bug",
"name": "bug",
"color": "d73a4a",
"default": true
},
{
"id": 1257724247,
"node_id": "MDU6TGFiZWwxMjU3NzI0MjQ3",
"url": "https://api.github.com/repos/testkamal/SalesforcePOC/labels/duplicate",
"name": "duplicate",
"color": "cfd3d7",
"default": true
}