Update on zoho analytics base table via deluge
Fri Jun 27 2025 11:21:24 GMT+0000 (Coordinated Universal Time)
Saved by @usman13
//////////////////////////////////
orgId = "667823888";
workspaceId = "1724734000003983010";
viewId = "1724734000019844002";
headersMap = Map();
headersMap.put("ZANALYTICS-ORGID",orgId);
config = Map();
config.put("responseFormat","json");
paramsMap = Map();
paramsMap.put("CONFIG",config.toString());
email = "zoho@rebiz.com";
WS_name = "Zoho One Analytics";
///////////////////Get Analytics table data////////v2 api/////////
Get_Analytics_Data = invokeurl
[
url :"https://analyticsapi.zoho.com/restapi/v2/bulk/workspaces/" + workspaceId + "/views/" + viewId + "/data"
type :GET
parameters:paramsMap
headers:headersMap
connection:"zoho_analytics"
];
//info Get_Analytics_Data;
if(Get_Analytics_Data != "" && Get_Analytics_Data.get("status") == "success")
{
jobId = Get_Analytics_Data.get("data").get("jobId");
}
getUrl("https://httpstat.us/200?sleep=10000");
download_Data = invokeurl
[
url :"https://analyticsapi.zoho.com/restapi/v2/bulk/workspaces/" + workspaceId + "/exportjobs/" + jobId + "/data"
type :GET
headers:headersMap
connection:"zoho_analytics"
];
//info download_Data;
get_download_Data = download_Data.get("data");
//info get_download_Data;
Expense_Data_Analytics_List = List();
Expense_id_list = List();
All_Expense_Data = List();
counter = 0;
for each expense in get_download_Data
{
Expense_ID = expense.get("Expense ID");
Date = expense.get("Date");
Expense_Date = expense.get("Expense Date");
Vendor = expense.get("Vendor");
customer = expense.get("Customer");
Expense_Category_Account_ID = expense.get("Expense Category Account ID");
Paid_through_Account_ID = expense.get("Account ID");
Paid_through_Account_Name = expense.get("Account");
Expense_No = expense.get("Expense #");
Expense_Description = expense.get("Expense Description");
Product_Category = expense.get("Product Category");
Department = expense.get("Department");
Amount = expense.get("Amount");
New_Amount = toDecimal(expense.get("New Amount")).round(2);
info New_Amount;
Employee_Paid_Through = expense.get("Employee Paid Through");
Department_Tag_Option_ID = expense.get("Department Tag Option ID");
Product_Category_Tag_Option_ID = expense.get("Product Category Tag Option ID");
////////////////// Tags List ///////////////////////////
Tags_list = list();
dep_tags_map = Map();
dep_tags_map.put("tag_id",1398255000000000333);
dep_tags_map.put("tag_option_id",Department_Tag_Option_ID);
Tags_list.add(dep_tags_map);
////////////////////////////////////////////
Prod_tags_map = Map();
Prod_tags_map.put("tag_id",1398255000000000339);
Prod_tags_map.put("tag_option_id",Product_Category_Tag_Option_ID);
Tags_list.add(Prod_tags_map);
/////////////////////////////////////////
if(!Expense_id_list.contains(Expense_ID))
{
Expense_id_list.add(Expense_ID);
expenseMap = Map();
expenseMap.put("expense_id",Expense_ID);
line_item = list();
line_item_map = Map();
line_item_map.put("account_id",Expense_Category_Account_ID);
line_item_map.put("amount",New_Amount);
line_item_map.put("tags",Tags_list);
//add new amount variable
expenseMap.put("account_id",Expense_Category_Account_ID);
expenseMap.put("date",Expense_Date);
expenseMap.put("amount",toDecimal(New_Amount));
expenseMap.put("Employee Paid Through",Employee_Paid_Through);
expenseMap.put("Line_Items",line_item);
All_Expense_Data.add(expenseMap);
if(toDecimal(New_Amount) > 0)
{
line_item.add(line_item_map);
}
////////////
}
else
{
line_item_map = Map();
line_item_map.put("account_id",Expense_Category_Account_ID);
line_item_map.put("amount",toDecimal(New_Amount));
line_item_map.put("tags",Tags_list);
// add new amount column
indexFound = Expense_id_list.indexOf(Expense_ID);
Line_item_list = All_Expense_Data.get(indexFound).get("Line_Items");
if(toDecimal(New_Amount) > 0.0)
{
Line_item_list.add(line_item_map);
}
}
}
//info "Size of expense" + All_Expense_Data.size();
for each expense in All_Expense_Data
{
update_Map = Map();
update_Map.put("line_items",expense.get("Line_Items"));
update_Map.put("account_id",expense.get("account_id"));
new_exp_date = expense.get("date").toDate().toString("yyyy-MM-dd");
update_Map.put("date",new_exp_date);
total_amount = 0.0;
for each line_item in expense.get("Line_Items")
{
total_amount = total_amount + toDecimal(line_item.get("amount"));
}
info "Total Amount" + total_amount.round(1);
update_Map.put("amount",total_amount.round(1));
update_Map.put("paid_through_account_id",expense.get("paid_through_account_id"));
//////////////////////////////////
Update_Expense = invokeurl
[
url :"https://www.zohoapis.com/books/v3/expenses/" + Expense_ID + "?organization_id=669825616"
type :PUT
parameters:update_Map.toString()
connection:"zoho_books"
];
info "Update_Expense Response:" + Update_Expense;
checkCode = Update_Expense.get("code");
if(checkCode == 0)
{
/////////////////////Update the data on zoho analytics///////////
columnsMap = Map();
columnsMap.put("Expense ID",Expense_ID);
columnsMap.put("Is Updated","Yes");
columnsMap.put("Expense Details",Line_item_list.toString());
columns = Map();
columns.put("columns",columnsMap);
paramsMap = Map();
paramsMap.put("CONFIG",columns.toString());
headersMap = Map();
headersMap.put("ZANALYTICS-ORGID",orgId);
response = invokeurl
[
url :"https://analyticsapi.zoho.com/restapi/v2/workspaces/" + workspaceId + "/views/1724734000020312044/rows"
type :POST
parameters:paramsMap
headers:headersMap
connection:"zoho_analytics"
];
//info response;
}
}



Comments