//////////////////////////////// TESTING USER FETCHING FROM ANOTHER SHEET ////////////////////////////////
function fetchUserData_TEST() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ResponseSheet TEST");
var destinationSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Users_to_WE TEST");
var sourceData = sourceSheet.getDataRange().getValues();
var destinationData = destinationSheet.getDataRange().getValues();
if (destinationData.length < sourceData.length) {
var newRows = sourceData.slice(destinationData.length);
for (var i = 0; i < newRows.length; i++) {
var row = destinationData.length + i + 1; // 1-based index
var email = newRows[i][1];
var phone = newRows[i][2];
phone = (phone.length === 10) ? "91" + phone : phone;
var name = newRows[i][3];
if (name && email && phone) {
var prefix = "test1_"
var startCounter = 300000
var uniqueUserId = generateUserId(row, prefix, startCounter);
destinationSheet.getRange(row, 1).setValue(uniqueUserId);
destinationSheet.getRange(row, 2).setValue(email);
destinationSheet.getRange(row, 3).setValue(phone);
destinationSheet.getRange(row, 4).setValue(name);
destinationSheet.getRange(row, 5).setValue("TRUE");
}
}
}
print("Done Test Fetching!");
}
//////////////////////////////// TESTING USER INTEGRATING API ////////////////////////////////
function pushUsersDataToWE_TEST_USERS() {
var mapper_keys = map_keys('Users_to_WE TEST')
SpreadsheetApp.flush()
fetchUserData_TEST();
var webEngageSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Users_to_WE TEST');
var StartRow = 2;
var RowRange = webEngageSheet.getLastRow() - StartRow + 1;
var WholeRange = webEngageSheet.getRange(StartRow, 1, RowRange, 6);
var AllValues = WholeRange.getDisplayValues();
var headers = {
"Authorization": "Bearer " + webEngageApiKey,
"Content-Type": "application/json"
}
var usersUrl = webEngageUrl + "v1/accounts/" + webEngageLicense + "/bulk-users";
var userList = [];
var batchSize = 25;
for (var idx in AllValues) {
var currentRow = AllValues[idx];
var status = currentRow[mapper_keys['status']];
if (status !== "Success" && status !== "Error" && status !== "User Integrated") {
var user_id = String(currentRow[mapper_keys['user_id']]);
var email = String(currentRow[mapper_keys['email']]);
var mobile = String(currentRow[mapper_keys['phone']]);
var name = String(currentRow[mapper_keys['first_name']]);
if (email != "#ERROR!" && mobile != "#ERROR!" && name != "#ERROR!" && mobile.length >= 10) {
var user = {
'userId': user_id,
'email': email,
'firstName': name,
'phone': mobile,
'whatsappOptIn': true,
};
userList.push(user)
if (userList.length === batchSize) {
var payload = { "users": userList }
payload = JSON.stringify(payload);
var [uploadResponse, respStatus] = callApi(usersUrl, "post", payload, headers);
if (respStatus != 201) {
print(payload);
print(respStatus);
}
var userList = [];
}
if (idx % 100 === 0) {
Utilities.sleep(5000);
}
webEngageSheet.getRange(parseInt(idx) + StartRow, mapper_keys['status'] + 1).setValue('User Integrated');
}
else {
webEngageSheet.getRange(parseInt(idx) + StartRow, mapper_keys['status'] + 1).setValue('Error');
}
}
}
if (userList.length > 0) {
var payload = { "users": userList }
payload = JSON.stringify(payload);
var [uploadResponse, respStatus] = callApi(usersUrl, "post", payload, headers);
if (respStatus != 201) {
print(payload);
print(respStatus);
}
print(uploadResponse)
}
print("Done Test Integration!");
}
//////////////////////////////// TESTING EVENT API ////////////////////////////////
function pushUsersDataToWE_TEST_EVENTS() {
var mapper_keys = map_keys('Users_to_WE TEST')
SpreadsheetApp.flush()
var webEngageSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Users_to_WE TEST');
var StartRow = 2;
var RowRange = webEngageSheet.getLastRow() - StartRow + 1;
var WholeRange = webEngageSheet.getRange(StartRow, 1, RowRange, 6);
var AllValues = WholeRange.getDisplayValues();
var headers = {
"Authorization": "Bearer " + webEngageApiKey,
"Content-Type": "application/json"
}
var eventUserList = [];
var batchSize = 25;
var eventsUrl = webEngageUrl + "v1/accounts/" + webEngageLicense + "/bulk-events";
var eventName = "Testing User Event 2";
for (var idx in AllValues) {
var currentRow = AllValues[idx];
var status = currentRow[mapper_keys['status']];
if (status === "User Integrated") {
var user_id = String(currentRow[mapper_keys['user_id']]);
if (user_id) {
var eventUser = {
"userId": user_id,
"eventName": eventName
};
eventUserList.push(eventUser)
if (eventUserList.length === batchSize) {
var payload = { "events": eventUserList }
payload = JSON.stringify(payload);
var [uploadResponse, respStatus] = callApi(eventsUrl, "post", payload, headers);
if (respStatus != 201) {
print(payload);
print(respStatus);
}
var eventUserList = [];
}
if (idx % 100 === 0) {
Utilities.sleep(5000);
}
webEngageSheet.getRange(parseInt(idx) + StartRow, mapper_keys['status'] + 1).setValue('Success');
}
else {
webEngageSheet.getRange(parseInt(idx) + StartRow, mapper_keys['status'] + 1).setValue('Error');
}
}
}
if (eventUserList.length > 0) {
var payload = { "events": eventUserList }
payload = JSON.stringify(payload);
var [uploadResponse, respStatus] = callApi(eventsUrl, "post", payload, headers);
if (respStatus != 201) {
print(payload);
print(respStatus);
}
print(uploadResponse)
print(payload)
print(respStatus)
}
print("Done Test Event!")
}