Tonmoy Muhury
Tonmoy Muhury

Reputation: 1

Solving problem using Zoho Deluge script in custom function

I need an output as follows for 1200+ accounts:

accounts_count = {
    "a": 120,
    "b": 45,
    "z": 220
}

So it will take the first Letter of an account name and make count for all account with their initial letter.

How can I solve it using Zoho Deluge script in a custom function?

Upvotes: 0

Views: 1621

Answers (1)

sucasa
sucasa

Reputation: 371

The hard part is getting all the contacts due to the 200 record limit in zoho

I'm not going to provide the full solution here, just the harder parts.


// this is the maximum number of records that you can query at once
max = 200;
// set to a value slightly higher than you need

max_contacts = 1500;

// round up one
n = max_contacts / max + 1;

// This is how many times you will loop (convert to int)
iterations = n.toNumber();

// this is a zoho hack to create a range of the length we want
counter = leftpad("1",iterations).replaceAll(" ","1,").toList();

// set paging
page = 1;

// TODO: initialize an alphabet map
//result = Map( {a: 0, b:0....});

// set to true when done so you're not wasting API Calls
done = false;

for each  i in counter
{
    // prevent extra crm calls
    if(!done)
    {
        response = zoho.crm.getRecords("Contacts",page,max);
        if(!isEmpty(response))
        {
            if(isNull(response.get(0)) && !isNull(response.get("code")))
            {
                info "Error:";
                info response;
            }
            else
            {
                for each  user in response
                {
                    // this is the easy part: get the first letter (lowercase)
                    // get the current value and add one
                    // set the value again
                    // set in result map
                }
            }
        }
        else
        {
            done = true;
        }
    }
    // increment the page
    page = page + 1;
}

Upvotes: 1

Related Questions