Files
Gainsight/Scripts/bulkPersonCreateAndGroupsWithCSV.js

67 lines
1.6 KiB
JavaScript
Raw Normal View History

const axios = require("axios")
const fs = require("fs")
var { parse } = require("csv-parse")
var usersArray = []
var api_key = "" // INSERT API KEY
function wait(ms) {
return new Promise((r) => setTimeout(r, ms))
}
function bulkAddPeople(xApiKey, users, num) {
let page = num
axios({
method: "post",
url: "https://api.northpass.com/v2/bulk/people",
data: {
data: {
attributes: {
people: [{ email: users[num].email, groups: users[num].group }],
},
},
},
headers: {
accept: "application/json",
"x-api-key": xApiKey,
"content-type": "application/json",
},
})
.then((res) => {
if (page < users.length - 1) {
console.log(`User ${users[num].email} added to group ${users[num].group} on index ${page}`)
page++
wait(200)
bulkAddPeople(xApiKey, users, page)
} else {
console.log("complete")
}
})
.catch((err) => {
console.log(err)
})
}
const csvReader = async () => {
fs.createReadStream("./csv-files/drofus-users.csv") // UPDATE URL OF CSV FILE
.pipe(parse({ delimiter: "," }))
.on("data", function (row) {
const userObj = {
email: row[3], // UPDATE COLUMN INDEX
group: row[7] // UPDATE COLUMN INDEX
}
usersArray.push(userObj)
})
.on("error", function (error) {
console.log(error.message)
})
.on("end", async function () {
console.log(`Number of emails in array: ${usersArray.length}`)
bulkAddPeople(api_key, usersArray, 1) // Start with index 1 if there is a header row, otherwise start with 0
})
}
csvReader()