Created
January 21, 2021 08:28
-
-
Save cyberdev/4b41e30ad2c236e5648e18e274beb1be to your computer and use it in GitHub Desktop.
Load data from API and Display it on Google Sheets
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
/********************************************************************************************************************************************* | |
* Get data from url | |
**********************************************************************************************************************************************/ | |
function getData(url){ | |
var options = { | |
'contentType' : 'application/json', | |
'headers' : { | |
'Authorization' : '<token>' | |
} | |
}; | |
var response = UrlFetchApp.fetch(url, options); | |
var status = response.getResponseCode(); | |
var result = JSON.parse(response.getContentText()) | |
if(status==200){ | |
var result = { | |
status: 'success', | |
result: result | |
}; | |
}else{ | |
var result = { | |
status: 'failure', | |
message: result.message | |
}; | |
} | |
return result; | |
} | |
/********************************************************************************************************************************************* | |
* Get data from url | |
**********************************************************************************************************************************************/ | |
function getAllData(urls){ | |
var requests = new Array(); | |
var i=0; | |
urls.forEach(function(url){ | |
requests[i] = { | |
'url' : url, | |
'method' : 'get', | |
'contentType' : 'application/json', | |
'headers' : { | |
'Authorization' : '<token>' | |
} | |
}; | |
i++; | |
}); | |
var responses = UrlFetchApp.fetchAll(requests); | |
return responses; | |
} | |
/********************************************************************************************************************************************* | |
* get first empty row | |
**********************************************************************************************************************************************/ | |
function getFirstEmptyRow(sheet, currentRow) { | |
var result = null; | |
while (result == null) { | |
var cellValue = sheet.getRange(currentRow, 1).getValue(); | |
if (cellValue == "") { | |
result = currentRow; | |
} else { | |
currentRow++; | |
} | |
} | |
return result; | |
} | |
/********************************************************************************************************************************************* | |
* Custom Report | |
**********************************************************************************************************************************************/ | |
/*function loadCustomReport(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
//Logger.log(rowStart + ' - ' + rowEnd); | |
var columnIndexes = { | |
"customReportId": 1, | |
"insertedDate": 2, | |
"month": 3, | |
"name": 4, | |
"url": 5, | |
"year": 6 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["customReportId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["insertedDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["month"]).setValue(''); | |
sheet.getRange(row, columnIndexes["name"]).setValue(''); | |
sheet.getRange(row, columnIndexes["url"]).setValue(''); | |
sheet.getRange(row, columnIndexes["year"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/customreports'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["customReportId"]).setValue(data["customReportId"]); | |
sheet.getRange(rowStart, columnIndexes["insertedDate"]).setValue(data["insertedDate"]); | |
sheet.getRange(rowStart, columnIndexes["month"]).setValue(data["month"]); | |
sheet.getRange(rowStart, columnIndexes["name"]).setValue(data["name"]); | |
sheet.getRange(rowStart, columnIndexes["url"]).setValue(data["url"]); | |
sheet.getRange(rowStart, columnIndexes["year"]).setValue(data["year"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
}*/ | |
/********************************************************************************************************************************************* | |
* Keyword Rankings | |
**********************************************************************************************************************************************/ | |
function loadKeywordRanking(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 7; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
//"areaAreaId": 1, | |
//"areaInsertedDate": 2, | |
//"areaName": 3, | |
//"areaId": 4, | |
"averageRank": 1, | |
"currentPage": 2, | |
"firstPageDate": 3, | |
"firstPageUrl": 4, | |
//"insertedDate": 9, | |
//"isAreaFirst": 10, | |
//"isTracking": 11, | |
//"keywordInsertedDate": 12, | |
//"keywordKeywordId": 13, | |
"keywordName": 5, | |
"keywordArea": 6, | |
//"keywordId": 15, | |
"rank": 7, | |
"startPage": 8, | |
"startRank": 9 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
//sheet.getRange(row, columnIndexes["areaAreaId"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["areaInsertedDate"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["areaName"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["areaId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["averageRank"]).setValue(''); | |
sheet.getRange(row, columnIndexes["currentPage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["firstPageDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["firstPageUrl"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["insertedDate"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["isAreaFirst"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["isTracking"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["keywordInsertedDate"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["keywordKeywordId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordArea"]).setValue(''); | |
//sheet.getRange(row, columnIndexes["keywordId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["rank"]).setValue(''); | |
sheet.getRange(row, columnIndexes["startPage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["startRank"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordrankings'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
//sheet.getRange(rowStart, columnIndexes["areaAreaId"]).setValue(data["area"]['areaId']); | |
//sheet.getRange(rowStart, columnIndexes["areaInsertedDate"]).setValue(data["area"]['insertedDate']); | |
//sheet.getRange(rowStart, columnIndexes["areaName"]).setValue(data["area"]['name']); | |
//sheet.getRange(rowStart, columnIndexes["areaId"]).setValue(data['areaId']); | |
sheet.getRange(rowStart, columnIndexes["averageRank"]).setValue(data['averageRank']); | |
sheet.getRange(rowStart, columnIndexes["currentPage"]).setValue(data['currentPage']); | |
sheet.getRange(rowStart, columnIndexes["firstPageDate"]).setValue(data['firstPageDate']); | |
sheet.getRange(rowStart, columnIndexes["firstPageUrl"]).setValue(data['firstPageUrl']); | |
//sheet.getRange(rowStart, columnIndexes["insertedDate"]).setValue(data['insertedDate']); | |
//sheet.getRange(rowStart, columnIndexes["isAreaFirst"]).setValue(data['isAreaFirst']); | |
//sheet.getRange(rowStart, columnIndexes["isTracking"]).setValue(data['isTracking']); | |
//sheet.getRange(rowStart, columnIndexes["keywordInsertedDate"]).setValue(data['keyword']['insertedDate']); | |
//sheet.getRange(rowStart, columnIndexes["keywordKeywordId"]).setValue(data['keyword']['keywordId']); | |
sheet.getRange(rowStart, columnIndexes["keywordName"]).setValue(data['keyword']['name']); | |
sheet.getRange(rowStart, columnIndexes["keywordArea"]).setValue(data["area"]['name']); | |
//sheet.getRange(rowStart, columnIndexes["keywordId"]).setValue(data['keywordId']); | |
sheet.getRange(rowStart, columnIndexes["rank"]).setValue(data['rank']); | |
sheet.getRange(rowStart, columnIndexes["startPage"]).setValue(data['startPage']); | |
sheet.getRange(rowStart, columnIndexes["startRank"]).setValue(data['startRank']); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Keyword Rankings History | |
**********************************************************************************************************************************************/ | |
function loadKeywordRankingHistory(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
//var keywordid = sheet.getRange(2, 2).getValue(); | |
//var areaid = sheet.getRange(3, 2).getValue(); | |
//var isareafirst = sheet.getRange(4, 2).getValue(); | |
var rowStart = 7; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"areaAreaId": 1, | |
"areaInsertedDate": 2, | |
"areaName": 3, | |
"areaId": 4, | |
"averageRank": 5, | |
"currentPage": 6, | |
"firstPageDate": 7, | |
"firstPageUrl": 8, | |
"insertedDate": 9, | |
"isAreaFirst": 10, | |
"isTracking": 11, | |
"keywordInsertedDate": 12, | |
"keywordKeywordId": 13, | |
"keywordName": 14, | |
"keywordId": 15, | |
"rank": 16, | |
"startPage": 17, | |
"startRank": 18 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["areaAreaId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaInsertedDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["averageRank"]).setValue(''); | |
sheet.getRange(row, columnIndexes["currentPage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["firstPageDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["firstPageUrl"]).setValue(''); | |
sheet.getRange(row, columnIndexes["insertedDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isAreaFirst"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isTracking"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordInsertedDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordKeywordId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["rank"]).setValue(''); | |
sheet.getRange(row, columnIndexes["startPage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["startRank"]).setValue(''); | |
} | |
} | |
//get all keyword ranking | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordrankings'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
//loop result | |
var i = 0; | |
var urls = new Array(); | |
response.result.forEach(function(data) { | |
var keywordid = data['keywordId']; | |
var areaid = data['areaId']; | |
var isareafirst = data['isAreaFirst']; | |
//call every result | |
urls[i] = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordrankings/history?keywordid=' + keywordid + '&areaid=' + areaid + '&isareafirst=' + isareafirst; | |
i++; | |
}); | |
var responses = getAllData(urls); | |
responses.forEach(function(rowresp) { | |
var status = rowresp.getResponseCode(); | |
var records = JSON.parse(rowresp.getContentText()) | |
if(status==200){ | |
records.forEach(function(data_detail){ | |
sheet.getRange(rowStart, columnIndexes["areaAreaId"]).setValue(data_detail["area"]['areaId']); | |
sheet.getRange(rowStart, columnIndexes["areaInsertedDate"]).setValue(data_detail["area"]['insertedDate']); | |
sheet.getRange(rowStart, columnIndexes["areaName"]).setValue(data_detail["area"]['name']); | |
sheet.getRange(rowStart, columnIndexes["areaId"]).setValue(data_detail['areaId']); | |
sheet.getRange(rowStart, columnIndexes["averageRank"]).setValue(data_detail['averageRank']); | |
sheet.getRange(rowStart, columnIndexes["currentPage"]).setValue(data_detail['currentPage']); | |
sheet.getRange(rowStart, columnIndexes["firstPageDate"]).setValue(data_detail['firstPageDate']); | |
sheet.getRange(rowStart, columnIndexes["firstPageUrl"]).setValue(data_detail['firstPageUrl']); | |
sheet.getRange(rowStart, columnIndexes["insertedDate"]).setValue(data_detail['insertedDate']); | |
sheet.getRange(rowStart, columnIndexes["isAreaFirst"]).setValue(data_detail['isAreaFirst']); | |
sheet.getRange(rowStart, columnIndexes["isTracking"]).setValue(data_detail['isTracking']); | |
sheet.getRange(rowStart, columnIndexes["keywordInsertedDate"]).setValue(data_detail['keyword']['insertedDate']); | |
sheet.getRange(rowStart, columnIndexes["keywordKeywordId"]).setValue(data_detail['keyword']['keywordId']); | |
sheet.getRange(rowStart, columnIndexes["keywordName"]).setValue(data_detail['keyword']['name']); | |
sheet.getRange(rowStart, columnIndexes["keywordId"]).setValue(data_detail['keywordId']); | |
sheet.getRange(rowStart, columnIndexes["rank"]).setValue(data_detail['rank']); | |
sheet.getRange(rowStart, columnIndexes["startPage"]).setValue(data_detail['startPage']); | |
sheet.getRange(rowStart, columnIndexes["startRank"]).setValue(data_detail['startRank']); | |
rowStart++; | |
}); | |
}else{ | |
Logger.log(rowresp.message); | |
} | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
/*var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordrankings/history?keywordid=' + keywordid + '&areaid=' + areaid + '&isareafirst=' + isareafirst; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["areaAreaId"]).setValue(data["area"]['areaId']); | |
sheet.getRange(rowStart, columnIndexes["areaInsertedDate"]).setValue(data["area"]['insertedDate']); | |
sheet.getRange(rowStart, columnIndexes["areaName"]).setValue(data["area"]['name']); | |
sheet.getRange(rowStart, columnIndexes["areaId"]).setValue(data['areaId']); | |
sheet.getRange(rowStart, columnIndexes["averageRank"]).setValue(data['averageRank']); | |
sheet.getRange(rowStart, columnIndexes["currentPage"]).setValue(data['currentPage']); | |
sheet.getRange(rowStart, columnIndexes["firstPageDate"]).setValue(data['firstPageDate']); | |
sheet.getRange(rowStart, columnIndexes["firstPageUrl"]).setValue(data['firstPageUrl']); | |
sheet.getRange(rowStart, columnIndexes["insertedDate"]).setValue(data['insertedDate']); | |
sheet.getRange(rowStart, columnIndexes["isAreaFirst"]).setValue(data['isAreaFirst']); | |
sheet.getRange(rowStart, columnIndexes["isTracking"]).setValue(data['isTracking']); | |
sheet.getRange(rowStart, columnIndexes["keywordInsertedDate"]).setValue(data['keyword']['insertedDate']); | |
sheet.getRange(rowStart, columnIndexes["keywordKeywordId"]).setValue(data['keyword']['keywordId']); | |
sheet.getRange(rowStart, columnIndexes["keywordName"]).setValue(data['keyword']['name']); | |
sheet.getRange(rowStart, columnIndexes["keywordId"]).setValue(data['keywordId']); | |
sheet.getRange(rowStart, columnIndexes["rank"]).setValue(data['rank']); | |
sheet.getRange(rowStart, columnIndexes["startPage"]).setValue(data['startPage']); | |
sheet.getRange(rowStart, columnIndexes["startRank"]).setValue(data['startRank']); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
}*/ | |
} | |
/********************************************************************************************************************************************* | |
* Keyword Rankings Weekly Analitics | |
**********************************************************************************************************************************************/ | |
function loadKeywordRankingWeeklyAnalitics(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
//Logger.log(rowStart + ' - ' + rowEnd); | |
var columnIndexes = { | |
"avgRank": 1, | |
"avgRankChangePercentage": 2, | |
"currentRank": 3, | |
"keywordsOnFirstPage": 4, | |
"keywordsOnFirstPageChangePercentage": 5, | |
"topRankingKeyword": 6 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["avgRank"]).setValue(''); | |
sheet.getRange(row, columnIndexes["avgRankChangePercentage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["currentRank"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordsOnFirstPage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywordsOnFirstPageChangePercentage"]).setValue(''); | |
sheet.getRange(row, columnIndexes["topRankingKeyword"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordrankings/analytics/week/current'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var data = response.result; | |
sheet.getRange(rowStart, columnIndexes["avgRank"]).setValue(data["avgRank"]); | |
sheet.getRange(rowStart, columnIndexes["avgRankChangePercentage"]).setValue(data["avgRankChangePercentage"]); | |
sheet.getRange(rowStart, columnIndexes["currentRank"]).setValue(data["currentRank"]); | |
sheet.getRange(rowStart, columnIndexes["keywordsOnFirstPage"]).setValue(data["keywordsOnFirstPage"]); | |
sheet.getRange(rowStart, columnIndexes["keywordsOnFirstPageChangePercentage"]).setValue(data["keywordsOnFirstPageChangePercentage"]); | |
sheet.getRange(rowStart, columnIndexes["topRankingKeyword"]).setValue(data["topRankingKeyword"]); | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Keywords And Areas | |
**********************************************************************************************************************************************/ | |
/*function loadKeywordsAndAreas(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 7; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"address": 1, | |
"areas": 2, | |
"description": 3, | |
"keywords": 4, | |
"title": 5, | |
"verticalName": 6, | |
"verticalVerticalId": 7 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["address"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areas"]).setValue(''); | |
sheet.getRange(row, columnIndexes["description"]).setValue(''); | |
sheet.getRange(row, columnIndexes["keywords"]).setValue(''); | |
sheet.getRange(row, columnIndexes["title"]).setValue(''); | |
sheet.getRange(row, columnIndexes["verticalName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["verticalVerticalId"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordsandareas'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var data = response.result; | |
sheet.getRange(rowStart, columnIndexes["address"]).setValue(data["address"]); | |
var realRowArea = rowStart; | |
data["areas"].forEach(function(area) { | |
sheet.getRange(realRowArea, columnIndexes["areas"]).setValue(area); | |
realRowArea++; | |
}); | |
sheet.getRange(rowStart, columnIndexes["description"]).setValue(data["description"]); | |
var realRowKeyword = rowStart; | |
data["keywords"].forEach(function(keyword) { | |
sheet.getRange(realRowKeyword, columnIndexes["keywords"]).setValue(keyword); | |
realRowKeyword++; | |
}); | |
sheet.getRange(rowStart, columnIndexes["title"]).setValue(data["title"]); | |
sheet.getRange(rowStart, columnIndexes["verticalName"]).setValue(data["vertical"]["name"]); | |
sheet.getRange(rowStart, columnIndexes["verticalVerticalId"]).setValue(data["vertical"]["verticalId"]); | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
}*/ | |
/********************************************************************************************************************************************* | |
* Local Profiles | |
**********************************************************************************************************************************************/ | |
function loadLocalProfiles(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 7; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"localProfileId": 1, | |
"customerId": 2, | |
"insertedDate": 3, | |
"localProfileCouponsCode": 4, | |
"localProfileCouponsBeginDate": 5, | |
"localProfileCouponsDescription": 6, | |
"localProfileCouponsDetails": 7, | |
"localProfileCouponsEndDate": 8, | |
"localProfileCouponsImageUrl": 9, | |
"localProfileCouponsLocalProfileCouponId": 10, | |
"localProfileCouponsLocalProfileId": 11, | |
"localProfileCouponsTitle": 12, | |
"localProfileSchedulesLocalProfileScheduleId": 13, | |
"localProfileSchedulesLocalProfileId": 14, | |
"localProfileSchedulesDay": 15, | |
"localProfileSchedulesOpenTimeString": 16, | |
"localProfileSchedulesCloseTimeString": 17, | |
"companyName": 18, | |
"streetAddress": 19, | |
"city": 20, | |
"state": 21, | |
"zip": 22, | |
"phone": 23, | |
"email": 24, | |
"website": 25, | |
"description": 26, | |
"category1": 27, | |
"category2": 28, | |
"category3": 29, | |
"category4": 30, | |
"category5": 31, | |
"googleProfileUrl": 32, | |
"contactName": 33, | |
"notes": 34, | |
"registrationEmail": 35, | |
"registrationPassword": 36, | |
"hasServiceArea": 37, | |
"primaryServiceLocation": 38, | |
"areaServed1": 39, | |
"areaServed2": 40, | |
"areaServed3": 41, | |
"areaServed4": 42, | |
"showOperatingHours": 43, | |
"isOpen247": 44, | |
"isByAppointmentOnly": 45, | |
"acceptsCash": 46, | |
"acceptsCheck": 47, | |
"acceptsTravelersCheck": 48, | |
"acceptsInvoice": 49, | |
"acceptsAmericanExpress": 50, | |
"acceptsDinersClub": 51, | |
"acceptsDiscover": 52, | |
"acceptsMasterCard": 53, | |
"acceptsVisa": 54, | |
"acceptsFinancing": 55, | |
"acceptsGoogleCheckout": 56, | |
"acceptsPaypal": 57, | |
"hasPrimaryServiceLocation": 58, | |
"primaryServiceLocationRadius": 59, | |
"isListingClaimedByClient": 60, | |
"isListingOptimized": 61, | |
"logoUrl": 62, | |
"imageUrls": 63, | |
"videoUrls": 64, | |
"isStreetAddressHidden": 65, | |
"isListingVerified": 66, | |
"isListingUnclaimed": 67, | |
"countryId": 68, | |
"isBingPinVerified": 69, | |
"isGooglePinVerified": 70, | |
"isYahooPinVerified": 71 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["localProfileId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["customerId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["insertedDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsCode"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsBeginDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsDescription"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsDetails"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsEndDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsImageUrl"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsLocalProfileCouponId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsLocalProfileId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileCouponsTitle"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileSchedulesLocalProfileScheduleId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileSchedulesLocalProfileId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileSchedulesDay"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileSchedulesOpenTimeString"]).setValue(''); | |
sheet.getRange(row, columnIndexes["localProfileSchedulesCloseTimeString"]).setValue(''); | |
sheet.getRange(row, columnIndexes["companyName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["streetAddress"]).setValue(''); | |
sheet.getRange(row, columnIndexes["city"]).setValue(''); | |
sheet.getRange(row, columnIndexes["state"]).setValue(''); | |
sheet.getRange(row, columnIndexes["zip"]).setValue(''); | |
sheet.getRange(row, columnIndexes["phone"]).setValue(''); | |
sheet.getRange(row, columnIndexes["email"]).setValue(''); | |
sheet.getRange(row, columnIndexes["website"]).setValue(''); | |
sheet.getRange(row, columnIndexes["description"]).setValue(''); | |
sheet.getRange(row, columnIndexes["category1"]).setValue(''); | |
sheet.getRange(row, columnIndexes["category2"]).setValue(''); | |
sheet.getRange(row, columnIndexes["category3"]).setValue(''); | |
sheet.getRange(row, columnIndexes["category4"]).setValue(''); | |
sheet.getRange(row, columnIndexes["category5"]).setValue(''); | |
sheet.getRange(row, columnIndexes["googleProfileUrl"]).setValue(''); | |
sheet.getRange(row, columnIndexes["contactName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["notes"]).setValue(''); | |
sheet.getRange(row, columnIndexes["registrationEmail"]).setValue(''); | |
sheet.getRange(row, columnIndexes["registrationPassword"]).setValue(''); | |
sheet.getRange(row, columnIndexes["hasServiceArea"]).setValue(''); | |
sheet.getRange(row, columnIndexes["primaryServiceLocation"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaServed1"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaServed2"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaServed3"]).setValue(''); | |
sheet.getRange(row, columnIndexes["areaServed4"]).setValue(''); | |
sheet.getRange(row, columnIndexes["showOperatingHours"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isOpen247"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isByAppointmentOnly"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsCash"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsCheck"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsTravelersCheck"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsInvoice"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsAmericanExpress"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsDinersClub"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsDiscover"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsMasterCard"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsVisa"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsFinancing"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsGoogleCheckout"]).setValue(''); | |
sheet.getRange(row, columnIndexes["acceptsPaypal"]).setValue(''); | |
sheet.getRange(row, columnIndexes["hasPrimaryServiceLocation"]).setValue(''); | |
sheet.getRange(row, columnIndexes["primaryServiceLocationRadius"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isListingClaimedByClient"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isListingOptimized"]).setValue(''); | |
sheet.getRange(row, columnIndexes["logoUrl"]).setValue(''); | |
sheet.getRange(row, columnIndexes["imageUrls"]).setValue(''); | |
sheet.getRange(row, columnIndexes["videoUrls"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isStreetAddressHidden"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isListingVerified"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isListingUnclaimed"]).setValue(''); | |
sheet.getRange(row, columnIndexes["countryId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isBingPinVerified"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isGooglePinVerified"]).setValue(''); | |
sheet.getRange(row, columnIndexes["isYahooPinVerified"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/localprofiles'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["localProfileId"]).setValue(data["localProfileId"]); | |
sheet.getRange(rowStart, columnIndexes["customerId"]).setValue(data["customerId"]); | |
sheet.getRange(rowStart, columnIndexes["insertedDate"]).setValue(data["insertedDate"]); | |
if(data["localProfileCoupons"]!=null){ | |
var rowCoupons = rowStart; | |
data["localProfileCoupons"].forEach(function(rcd) { | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsCode"]).setValue(rcd['code']); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsBeginDate"]).setValue(rcd['beginDate']); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsDescription"]).setValue(rcd['description']); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsDetails"]).setValue(rcd["details"]); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsEndDate"]).setValue(rcd["endDate"]); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsImageUrl"]).setValue(rcd["imageUrl"]); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsLocalProfileCouponId"]).setValue(rcd["localProfileCouponId"]); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsLocalProfileId"]).setValue(rcd["localProfileId"]); | |
sheet.getRange(rowCoupons, columnIndexes["localProfileCouponsTitle"]).setValue(rcd["title"]); | |
rowCoupons++ | |
}) | |
} | |
if(data["localProfileSchedules"]!=null){ | |
var rowSchedulle = rowStart; | |
data["localProfileSchedules"].forEach(function(rcd) { | |
sheet.getRange(rowSchedulle, columnIndexes["localProfileSchedulesLocalProfileScheduleId"]).setValue(rcd["localProfileScheduleId"]); | |
sheet.getRange(rowSchedulle, columnIndexes["localProfileSchedulesLocalProfileId"]).setValue(rcd["localProfileId"]); | |
sheet.getRange(rowSchedulle, columnIndexes["localProfileSchedulesDay"]).setValue(rcd["day"]); | |
sheet.getRange(rowSchedulle, columnIndexes["localProfileSchedulesOpenTimeString"]).setValue(rcd["openTimeString"]); | |
sheet.getRange(rowSchedulle, columnIndexes["localProfileSchedulesCloseTimeString"]).setValue(rcd["closeTimeString"]); | |
rowSchedulle++; | |
}); | |
} | |
sheet.getRange(rowStart, columnIndexes["companyName"]).setValue(data["companyName"]); | |
sheet.getRange(rowStart, columnIndexes["streetAddress"]).setValue(data["streetAddress"]); | |
sheet.getRange(rowStart, columnIndexes["city"]).setValue(data["city"]); | |
sheet.getRange(rowStart, columnIndexes["state"]).setValue(data["state"]); | |
sheet.getRange(rowStart, columnIndexes["zip"]).setValue(data["zip"]); | |
sheet.getRange(rowStart, columnIndexes["phone"]).setValue(data["phone"]); | |
sheet.getRange(rowStart, columnIndexes["email"]).setValue(data["email"]); | |
sheet.getRange(rowStart, columnIndexes["website"]).setValue(data["website"]); | |
sheet.getRange(rowStart, columnIndexes["description"]).setValue(data["description"]); | |
sheet.getRange(rowStart, columnIndexes["category1"]).setValue(data["category1"]); | |
sheet.getRange(rowStart, columnIndexes["category2"]).setValue(data["category2"]); | |
sheet.getRange(rowStart, columnIndexes["category3"]).setValue(data["category3"]); | |
sheet.getRange(rowStart, columnIndexes["category4"]).setValue(data["category4"]); | |
sheet.getRange(rowStart, columnIndexes["category5"]).setValue(data["category5"]); | |
sheet.getRange(rowStart, columnIndexes["googleProfileUrl"]).setValue(data["googleProfileUrl"]); | |
sheet.getRange(rowStart, columnIndexes["contactName"]).setValue(data["contactName"]); | |
sheet.getRange(rowStart, columnIndexes["notes"]).setValue(data["notes"]); | |
sheet.getRange(rowStart, columnIndexes["registrationEmail"]).setValue(data["registrationEmail"]); | |
sheet.getRange(rowStart, columnIndexes["registrationPassword"]).setValue(data["registrationPassword"]); | |
sheet.getRange(rowStart, columnIndexes["hasServiceArea"]).setValue(data["hasServiceArea"]); | |
sheet.getRange(rowStart, columnIndexes["primaryServiceLocation"]).setValue(data["primaryServiceLocation"]); | |
sheet.getRange(rowStart, columnIndexes["areaServed1"]).setValue(data["areaServed1"]); | |
sheet.getRange(rowStart, columnIndexes["areaServed2"]).setValue(data["areaServed2"]); | |
sheet.getRange(rowStart, columnIndexes["areaServed3"]).setValue(data["areaServed3"]); | |
sheet.getRange(rowStart, columnIndexes["areaServed4"]).setValue(data["areaServed4"]); | |
sheet.getRange(rowStart, columnIndexes["showOperatingHours"]).setValue(data["showOperatingHours"]); | |
sheet.getRange(rowStart, columnIndexes["isOpen247"]).setValue(data["isOpen247"]); | |
sheet.getRange(rowStart, columnIndexes["isByAppointmentOnly"]).setValue(data["isByAppointmentOnly"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsCash"]).setValue(data["acceptsCash"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsCheck"]).setValue(data["acceptsCheck"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsTravelersCheck"]).setValue(data["acceptsTravelersCheck"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsInvoice"]).setValue(data["acceptsInvoice"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsAmericanExpress"]).setValue(data["acceptsAmericanExpress"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsDinersClub"]).setValue(data["acceptsDinersClub"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsDiscover"]).setValue(data["acceptsDiscover"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsMasterCard"]).setValue(data["acceptsMasterCard"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsVisa"]).setValue(data["acceptsVisa"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsFinancing"]).setValue(data["acceptsFinancing"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsGoogleCheckout"]).setValue(data["acceptsGoogleCheckout"]); | |
sheet.getRange(rowStart, columnIndexes["acceptsPaypal"]).setValue(data["acceptsPaypal"]); | |
sheet.getRange(rowStart, columnIndexes["hasPrimaryServiceLocation"]).setValue(data["hasPrimaryServiceLocation"]); | |
sheet.getRange(rowStart, columnIndexes["primaryServiceLocationRadius"]).setValue(data["primaryServiceLocationRadius"]); | |
sheet.getRange(rowStart, columnIndexes["isListingClaimedByClient"]).setValue(data["isListingClaimedByClient"]); | |
sheet.getRange(rowStart, columnIndexes["isListingOptimized"]).setValue(data["isListingOptimized"]); | |
sheet.getRange(rowStart, columnIndexes["logoUrl"]).setValue(data["logoUrl"]); | |
sheet.getRange(rowStart, columnIndexes["imageUrls"]).setValue(data["imageUrls"]); | |
sheet.getRange(rowStart, columnIndexes["videoUrls"]).setValue(data["videoUrls"]); | |
sheet.getRange(rowStart, columnIndexes["isStreetAddressHidden"]).setValue(data["isStreetAddressHidden"]); | |
sheet.getRange(rowStart, columnIndexes["isListingVerified"]).setValue(data["isListingVerified"]); | |
sheet.getRange(rowStart, columnIndexes["isListingUnclaimed"]).setValue(data["isListingUnclaimed"]); | |
sheet.getRange(rowStart, columnIndexes["countryId"]).setValue(data["countryId"]); | |
sheet.getRange(rowStart, columnIndexes["isBingPinVerified"]).setValue(data["isBingPinVerified"]); | |
sheet.getRange(rowStart, columnIndexes["isGooglePinVerified"]).setValue(data["isGooglePinVerified"]); | |
sheet.getRange(rowStart, columnIndexes["isYahooPinVerified"]).setValue(data["isYahooPinVerified"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Online Presence | |
**********************************************************************************************************************************************/ | |
function loadOnlinePresence(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"monthToDate": 1, | |
"lifeToDate": 2 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["monthToDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["lifeToDate"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/onlinepresence'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var data = response.result; | |
sheet.getRange(rowStart, columnIndexes["monthToDate"]).setValue(data["monthToDate"]); | |
sheet.getRange(rowStart, columnIndexes["lifeToDate"]).setValue(data["lifeToDate"]); | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Required Actions | |
**********************************************************************************************************************************************/ | |
function loadRequiredActions(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var startdate = sheet.getRange(2, 2).getDisplayValue(); | |
var enddate = sheet.getRange(3, 2).getDisplayValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
//Logger.log(rowStart + ' - ' + rowEnd); | |
var columnIndexes = { | |
"taskId": 1, | |
"categoryName": 2, | |
"taskName": 3, | |
"completedDate": 4, | |
"minutesSpent": 5, | |
"actionUrl": 6 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["taskId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["categoryName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["taskName"]).setValue(''); | |
sheet.getRange(row, columnIndexes["completedDate"]).setValue(''); | |
sheet.getRange(row, columnIndexes["minutesSpent"]).setValue(''); | |
sheet.getRange(row, columnIndexes["actionUrl"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/tasks/completed?startdate=' + startdate + '&enddate=' + enddate; | |
Logger.log(url); | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["taskId"]).setValue(data["taskId"]); | |
sheet.getRange(rowStart, columnIndexes["categoryName"]).setValue(data["categoryName"]); | |
sheet.getRange(rowStart, columnIndexes["taskName"]).setValue(data["taskName"]); | |
sheet.getRange(rowStart, columnIndexes["completedDate"]).setValue(data["completedDate"]); | |
sheet.getRange(rowStart, columnIndexes["minutesSpent"]).setValue(data["minutesSpent"]); | |
sheet.getRange(rowStart, columnIndexes["actionUrl"]).setValue(data["actionUrl"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Total Work | |
**********************************************************************************************************************************************/ | |
function loadTotalWork(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"totalWork": 1, | |
"currentMonth": 2 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["totalWork"]).setValue(''); | |
sheet.getRange(row, columnIndexes["currentMonth"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/total'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var totalwork = response.result; | |
sheet.getRange(rowStart, columnIndexes["totalWork"]).setValue(totalwork); | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/total/currentmonth'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var currentmonth = response.result; | |
sheet.getRange(rowStart, columnIndexes["currentMonth"]).setValue(currentmonth); | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Total Work By Category | |
**********************************************************************************************************************************************/ | |
function loadTotalWorkByCategory(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"categoryId": 1, | |
"name": 2, | |
"count": 3 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["categoryId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["name"]).setValue(''); | |
sheet.getRange(row, columnIndexes["count"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/total/bycategory'; | |
Logger.log(url); | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["categoryId"]).setValue(data["categoryId"]); | |
sheet.getRange(rowStart, columnIndexes["name"]).setValue(data["name"]); | |
sheet.getRange(rowStart, columnIndexes["count"]).setValue(data["count"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Total Work Hours By Month | |
**********************************************************************************************************************************************/ | |
function loadTotalWorkHoursByMonth(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var numberofmonths = sheet.getRange(2, 2).getValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"month": 1, | |
"year": 2, | |
"hoursCompleted": 3, | |
"hoursPending": 4 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["month"]).setValue(''); | |
sheet.getRange(row, columnIndexes["year"]).setValue(''); | |
sheet.getRange(row, columnIndexes["hoursCompleted"]).setValue(''); | |
sheet.getRange(row, columnIndexes["hoursPending"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/hours/bymonth?numberofmonths=' + numberofmonths; | |
Logger.log(url); | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["month"]).setValue(data["month"]); | |
sheet.getRange(rowStart, columnIndexes["year"]).setValue(data["year"]); | |
sheet.getRange(rowStart, columnIndexes["hoursCompleted"]).setValue(data["hoursCompleted"]); | |
sheet.getRange(rowStart, columnIndexes["hoursPending"]).setValue(data["hoursPending"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Running Total Work By Category | |
**********************************************************************************************************************************************/ | |
function loadRunningTotalWorkByCategory(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var categoryid = sheet.getRange(2, 2).getValue(); | |
var date = sheet.getRange(3, 2).getDisplayValue(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"categoryId": 1, | |
"name": 2, | |
"count": 3 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["categoryId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["name"]).setValue(''); | |
sheet.getRange(row, columnIndexes["count"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/categories/' + categoryid + '/total?date=' + date; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["categoryId"]).setValue(data["categoryId"]); | |
sheet.getRange(rowStart, columnIndexes["name"]).setValue(data["name"]); | |
sheet.getRange(rowStart, columnIndexes["count"]).setValue(data["count"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Completed Customer Work | |
**********************************************************************************************************************************************/ | |
function loadCompletedCustomerWork(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var customerid = sheet.getRange(1, 2).getValue(); | |
var categoryid = sheet.getRange(2, 2).getValue(); | |
var startdate = sheet.getRange(3, 2).getDisplayValue(); | |
var enddate = sheet.getRange(4, 2).getDisplayValue(); | |
var rowStart = 7; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"date": 1, | |
"name": 2, | |
"url": 3 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["date"]).setValue(''); | |
sheet.getRange(row, columnIndexes["name"]).setValue(''); | |
sheet.getRange(row, columnIndexes["url"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/categories/' + categoryid + '/completed?startdate=' + startdate + '&enddate=' + enddate; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var total = response.result.length; | |
if(total > 0){ | |
response.result.forEach(function(data) { | |
sheet.getRange(rowStart, columnIndexes["date"]).setValue(data["date"]); | |
sheet.getRange(rowStart, columnIndexes["name"]).setValue(data["name"]); | |
sheet.getRange(rowStart, columnIndexes["url"]).setValue(data["url"]); | |
rowStart++; | |
}); | |
}else{ | |
Browser.msgBox("No result to display"); | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Completed Customer Work | |
**********************************************************************************************************************************************/ | |
function loadCompletedCustomerWork(){ | |
var active = SpreadsheetApp.getActive(); | |
var sheet = active.getActiveSheet(); | |
var rowStart = 6; | |
var rowEnd = getFirstEmptyRow(sheet, rowStart) - 1; | |
var columnIndexes = { | |
"categoryId": 1, | |
"categoryName": 2 | |
}; | |
//clear result first | |
if(rowEnd >= rowStart){ | |
for(var row=rowStart;row<=rowEnd;row++){ | |
sheet.getRange(row, columnIndexes["categoryId"]).setValue(''); | |
sheet.getRange(row, columnIndexes["categoryName"]).setValue(''); | |
} | |
} | |
var url = 'https://service.boostability.com/api/partner/v3/work/categories'; | |
var response = getData(url); | |
if(response.status=='success'){ | |
var data = response.result; | |
for(var key in data){ | |
sheet.getRange(rowStart, columnIndexes["categoryId"]).setValue(key); | |
sheet.getRange(rowStart, columnIndexes["categoryName"]).setValue(data[key]); | |
rowStart++; | |
} | |
}else{ | |
Browser.msgBox("Error: " + response.message); | |
} | |
} | |
/********************************************************************************************************************************************* | |
* Custom Report | |
**********************************************************************************************************************************************/ | |
function loadTopRank() { | |
var active = SpreadsheetApp.getActive(); | |
var sheets = active.getActiveSheet(); | |
var customerid = sheets.getRange(1, 2).getValue(); | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/keywordrankings/analytics/week/current'; | |
var options = { | |
'contentType' : 'application/json', | |
'headers' : { | |
'Authorization' : '<token>' | |
} | |
}; | |
var response = UrlFetchApp.fetch(url, options); | |
var status = response.getResponseCode(); | |
if(status==200){ | |
var result = JSON.parse(response.getContentText()); | |
sheets.getRange(6, 1).setValue(result.topRankingKeyword); | |
sheets.getRange(6, 4).setValue(result.currentRank); | |
sheets.getRange(6, 7).setValue(result.keywordsOnFirstPage); | |
sheets.getRange(12, 1).setValue(result.avgRank); | |
}else{ | |
sheets.getRange(6, 1).setValue('Error'); | |
sheets.getRange(6, 4).setValue('Error'); | |
sheets.getRange(6, 7).setValue('Error'); | |
sheets.getRange(12, 1).setValue('Error'); | |
} | |
//total online presence | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/onlinepresence'; | |
var response = UrlFetchApp.fetch(url, options); | |
var status = response.getResponseCode(); | |
if(status==200){ | |
var result = JSON.parse(response.getContentText()); | |
sheets.getRange(12, 4).setValue(result.lifeToDate); | |
}else{ | |
sheets.getRange(12, 4).setValue('Error'); | |
} | |
//total completed items complete | |
var url = 'https://service.boostability.com/api/partner/v3/customers/' + customerid + '/work/total'; | |
var response = UrlFetchApp.fetch(url, options); | |
var status = response.getResponseCode(); | |
if(status==200){ | |
var result = JSON.parse(response.getContentText()); | |
sheets.getRange(18, 1).setValue(result); | |
}else{ | |
sheets.getRange(18, 1).setValue('Error'); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment