Power of Automation :: Automatically approve the pending timelogs at your preferred time

Power of Automation :: Automatically approve the pending timelogs at your preferred time

Hello Everyone,


A custom function is a software code that can be used to automate a process and this allows you to automate a notification, call a webhook, or perform logic immediately after a workflow rule is triggered. This feature helps to automate complex tasks and calculations. 


Below is the requirement:


Our customer approached with the below requirement - They want an automation that all the pending timelogs should be automatically approved in the first week of every month. Likewise, it is possible to configure as per your preferred time.

We had accomplished this requirement using Schedule functions. This allows you to execute custom functions based on a specified schedule such as hourly, daily, weekly, or monthly. This feature can be used for recurring actions, like generating monthly reports or sending automated emails to portal users about upcoming public milestones or deadlines without relying on specific events.


Create a connection for the Zoho Projects service with the scopes "ZohoProjects.timesheets.ALL' to replace ‘projects’ with the connection name. Click this link below to learn how to create the connection. Attached a screenshot of the Schedule Function for reference.


Script to be used:


endPointV3 = "https://projects.zoho.com/api/v3/portal/";

logParamList = List();

moduleTemplate = Map();

moduleTemplate.put("type","task");

timesheetParam = Map();

timesheetParam.put("view_type","month");

timesheetParam.put("module",moduleTemplate);

timesheetParam.put("start_date",zoho.currentdate.addMonth(-1));

timesheetParam.put("end_date",zoho.currentdate);

taskTimesheetResponse = invokeurl

[

url :endPointV3 + portalId + "/timesheet"

type :GET

parameters:timesheetParam

connection:"projects"

];

// info taskTimesheetResponse;

if(taskTimesheetResponse != null)

{

for each  time_log in taskTimesheetResponse.get("time_logs")

{

for each  logs in time_log.get("log_details")

{

logDetail = Map();

logDetail.put("approval_status","approved");

logDetail.put("module","task");

logDetail.put("id",logs.get("id"));

logParamList.add(logDetail);

}

}

}

genralLogIds = Map();

moduleTemplate.clear();

timesheetParam.remove("module");

moduleTemplate.put("type","general");

timesheetParam.put("module",moduleTemplate);

generalTimesheetResponse = invokeurl

[

url :endPointV3 + portalId + "/timesheet"

type :GET

parameters:timesheetParam

connection:"projects"

];

// info generalTimesheetResponse;

if(generalTimesheetResponse != null)

{

for each  time_log in generalTimesheetResponse.get("time_logs")

{

for each  logs in time_log.get("log_details")

{

logDetail = Map();

logDetail.put("approval_status","approved");

logDetail.put("module","general");

logDetail.put("id",logs.get("id"));

logParamList.add(logDetail);

}

}

}

issueLogIds = Map();

moduleTemplate.clear();

timesheetParam.remove("module");

moduleTemplate.put("type","issue");

timesheetParam.put("module",moduleTemplate);

issueTimesheetResponse = invokeurl

[

url :endPointV3 + portalId + "/timesheet"

type :GET

parameters:timesheetParam

connection:"projects"

];

// info issueTimesheetResponse;

if(issueTimesheetResponse != null)

{

for each  time_log in issueTimesheetResponse.get("time_logs")

{

for each  logs in time_log.get("log_details")

{

logDetail = Map();

logDetail.put("approval_status","approved");

logDetail.put("module","issue");

logDetail.put("id",logs.get("id"));

logParamList.add(logDetail);

}

}

}

approveTimesheets = invokeurl

[

url :endPointV3 + portalId + "/logs"

type :PATCH

parameters: "["+logParamList.toString()+"]"

connection:"projects"

];

info approveTimesheets;

Creating custom functions in Zoho Projects is straightforward and well-documented. Zoho provides a range of built-in functions that you can use as a starting point, and you can also easily define your own functions using Zoho's scripting language, Deluge. Give it a try and see how it can save your time and boost your productivity!

 

Watch this space for more such custom function codes. 



      • Sticky Posts

      • Zoho Projects - Q3 Updates | 2025

        Hello Users, The final quarter of the year 2025 has begun, and we at Zoho Projects are all set with a plan. New targets to achieve and new milestones to reach, influenced by the lasting imprint of the past quarter. 2025's Q3 saw some new features and
      • Introducing Version-3 APIs - Explore New APIs & Enhancements

        Happy to announce the release of Version 3 (V3) APIs with an easy to use interface, new APIs, and more examples to help you understand and access the APIs better. V3 APIs can be accessed through our new link, where you can explore our complete documentation,
      • Schedule Exports for Regular Project Updates

        Tracking project data often means exporting data at regular intervals. Instead of manually exporting data every time, users can schedule exports for Phases, Tasks, and Tasks in Zoho Projects. These exports can be set to run once, daily, weekly, or monthly
      • Set Custom Business Calendars and Holidays for Global Teams

        Managing a project across diverse teams means accounting for more than just tasks and deadlines; it means acknowledging how and when each team actually works. Users might follow different working days or observe region-specific holidays that cannot be
      • Restore Trashed Records Anytime Within 30 Days

        Access the recycle bin from the Data Administration tab under the settings page in Zoho Projects, which gives better control over the trashed data. When records like projects, phases, task lists, tasks, issues, or project templates are trashed, they are

        • Recent Topics

        • Always display images from this sender – Is this feature available?

          In Zoho mail, I had my "Load external images" setting set to "Ask me", and that's fine. That's the setting I prefer. What's not fine though is I always need to tick "Display now" for each email I get, regardless if I've done that multiple times from several
        • Function #9: Copy attachments of Sales Order to Purchase Order on conversion

          This week, we have written a custom function that automatically copies the attachments uploaded for a sales order to the corresponding purchase order after you convert it. Here's how to configure it in your Zoho Books organization. Custom Function: Hit
        • Free webinar: Security that works: Building resilience for the AI-powered workforce

          Hello there, Did you know that more than 51% of organizations worldwide have experienced one or more security breaches, each costing over $1 million in losses or incident response? In today’s threat landscape, simply playing defense is no longer enough.
        • Zoho Notebook Sync problem

          I'm facing a problem with syncing of notebook on android app. It's not syncing. Sometimes it syncs after a day or two.  I created some notes on web notebook but it's not syncing on mobile app. Please help!!!!
        • Cant Save Gauge on Creator Page

          How to Save Gauge on Creator Page see movie https://vimeo.com/1116410860?share=copy#t=0
        • Apply Advance option not shown in report

          We are facing an issue in Zoho Expenses. While approving an Expense Report, the "Apply Advance" option is not appearing under the three dots (More Options). Details: Module: Expense Reports Issue: "Apply Advance" option not visible Status of Report: Awaiting
        • Auto Capitalize First Letter of Words

          Hi I am completely new to ZOHO and am trying to build a database. How can i make it when a address is entered into a form field like this: main st it automatically changes is to show: Main St Thank You
        • Follow-up emails via Workflow Automation not staying in the same thread

          Dear Zoho Support Team, I am currently using Workflow Automation in Zoho Campaigns to send follow-up emails. In my test case, I noticed the following behavior: All emails in the automation have the same subject line. If the follow-up email is sent within
        • Client Script refuses to set an initial value in Subform field

          I tried a very simple, 1 line client script to set a default value in a custom subform field when the "Add Row" button is clicked and the user is entering data. It does not work - can someone tell me why? ZDK documentation suggests this should be doable.
        • Help Center IFrame Issue

          I have had a working Help Center on my website using an iframe for a while. But now for some reason the sign in page gets a refused to connect error. Can someone please help. If I go to the url manually it works correclty
        • Comment Templates

          Is it possible to add a template option for comments? We have some agents in the process who's responses require a pre-formatted layout. It would be incredibly handy to have a template for them where they can insert the template and then add their responses
        • [ZohoDesk] Improve Status View with a new editeble kanban view

          A kanban view with more information about the ticket and the contact who created the ticket would be valueble. I would like to edit the fields with the ones i like to see at one glance. Like in CRM where you can edit the canvas view, i would like to edit
        • Adding Markdown text using Zoho Desk API into the Knowledge Base

          Hi Zoho Community members, We currently maintain the documentation of out company in its website. This documentation is written in markdown text format and we would like to add it in Zoho Knowledge Base. Do you know if there is REST API functionality
        • An Exclusive Session for Zoho Desk Users: AI in Zoho Desk

          A Zoho Community Learning Initiative Hello everyone! This is an announcement for Zoho Desk users and anyone exploring Zoho Desk. With every nook and corner buzzing, "AI's here, AI's there," it's the right time for us to take a closer look at how the AI
        • Shared values: From classroom lessons to teaching moments in customer service

          While the world observes Teachers’ Day on October 5, in India, we celebrate a month earlier, on September 5, to mark the birth anniversary of Dr. Sarvepalli Radhakrishnan, a great teacher, renowned scholar, educationist, and advocate for empowerment.
        • Create a list of customers who participated in specific Zoho Backstage events and send them an email via Zoho CRM

          How to create a list of customers who participated in specific Zoho Backstage events and send them an email via Zoho CRM? I was able to do a view in CRM based on customer that registered to an event, but I don't seems to be able to include the filter
        • Zoho Desk blank page

          1. Click Access zoho desk on https://www.zoho.com/desk/ 2. It redirects to https://desk.zoho.com/agent?action=CreatePortal and the page is blank. Edge browser Version 131.0.2903.112 (Official build) (arm64) on MacOS
        • I hate the new user UI with the bar on the left

          How can I reverse this?
        • Question regarding import of previous deals...

          Good afternoon, I'm working on importing some older deal records from an external sheet into the CRM; however, when I manually click "Add New Deal" and enter the pertinent information, the deal isn't appearing when I look at the "Deals" bar on the account's
        • Client Script also planned for Zoho Desk?

          Hello there, I modified something in Zoho CRM the other day and was amazed at the possibilities offered by the "Client Script" feature in conjunction with the ZDK. You can lock any fields on the screen, edit them, you can react to various events (field
        • One person/cell phone to manage multiple accounts

          Hi. I have a personal Free account to keep my own domain/emails. Now I need to create a Business account to my company's own domain, but I have only one mobile phone number I use to everything. How do I do to manage this? Can I manage a Free domain and
        • Tracking KPIs, Goals etc in People

          How are Zoho People users tracking employee targets in People? For example, my marketing assistant has a target of "Collect 10 new customer testimonials every month". I want to record attainment for this target on a monthly basis, then add it to their
        • Zoho Desk: Ticket Owner Agents vs Teams

          Hi Zoho, We would like to explore the possibility of hiding the ‘Agents’ section within the Ticket Owner dropdown, so that we can fully utilise the ‘Teams’ dropdown when assigning tickets. This request comes from the fact that only certain agents and
        • Can not Use Attachment Button on Android Widget

          this always pops up when I touch the attach button on android widget. going to settings, there is no storage permission to be enabled. if I open the app, and access the attach feature there, I can access my storage and upload normally.
        • Announcing new features in Trident for Mac (1.24.0)

          Hello everyone! Trident for macOS (v.1.24.0) is here with interesting features and thoughtful enhancements to redefine the way you plan and manage your calendar events. Here's a quick look at what's new. Create calendar events from emails. In addition
        • Mass Mail Statistics - Number of unsent emails

          How do I find out which emails were not sent?
        • Est-il possible d'annuler l'envoi d'un mail automatique ?

          Bonjour, Lorsque je refuse un candidat, il reçois un mail dans les 24h pour l'informer que sa candidature n'est pas retenue. J'ai rejeté un candidat par erreur. Savez-vous s'il possible d'annuler l'envoi de ce mail ? Merci d'avance pour votre aide.
        • embed a form in an email

          Hello, how to embed a form in an email that populates Zoho CRM cases? I would like to send emails to a selected audience offering something. In the same email the recipients - if interested - instead of replying to can fill in a Zoho CRM form that creates
        • Zoho Bookings - Reserve with Google

          Does Zoho Bookings plan to to integrate with Reserve with Google?
        • How to add Zoho demo site page designs to my Zoho Sites website

          Hi, I would like to add the design from the following demo URLs into my current Zoho website. I have already created two new pages on my site, named “Menu2” and “Menu3.” For the “Menu2” page, I want to use the design from this demo: https://naturestjuice-demo.zohosites.com/menu
        • Digest Août - Un résumé de ce qui s'est passé le mois dernier sur Community

          Bonjour chère communauté ! Voici le résumé tant attendu de tout ce qui a marqué Zoho le mois dernier : contenus utiles, échanges inspirants et moments forts. 🎉 Découvrez Zoho Backstage 3.0 : une version repensée pour offrir encore plus de flexibilité,
        • Text snippet

          There is a nice feature in Zoho Desk called Text Snippet. It allows you to insert a bit of text anywhere in a reply that you are typing. That would be nice to have that option in Zoho CRM as well when we compose an email. Moderation Update: We agree that
        • Kaizen #206 - Answering your Questions | Displaying Related Purchase Orders from Zoho Books in CRM Deals using Queries

          Hello everyone! We're back with another post in the Kaizen series. We're grateful for the feedback we received from all of you! One of the questions we received was "I would like to see the list of Purchase Orders in Zoho Books for a Deal in CRM." We
        • Add Analytics function for Title case (capitalising each word in a string)

          At present, you can only capitalise each word in a string in Analytics during data import. It would be really useful to be able to do this with a formula column, but there is no Title Case function.
        • How to conditionally embed an own internal widget with parameters in an html snippet?

          Hello everyone, I'm trying to create a dynamic view in a page using an HTML snippet. The goal is to display different content based on a URL parameter (input.step). I have successfully managed to conditionally display different forms using the following
        • Sync more than one Workdrive

          Hello Please I'm facing some difficulties since some days. In my company we have many zoho accounts in different organisations. And I have to find a way to sync all these Workdrives. I spend many hours to search it on zoho Workdrive but no solution. Could someone help me ? Any idea how I can achieve it ? Thanks in advance. Regards
        • Zoho writer unable to merge documents to PDF with basic fonts in Hebrew or fonts from my computer

          I created several forms that will be merged into PDF files through Zoho Writer and I am unable to receive the PDF in the basic fonts of the Hebrew language or in the fonts I have on my computer. The writer exports to PDF an exchange font that looks very
        • Base Currency Adjustment Reversal

          Two questions surrounding the base currency adjustments (BCA). I recently ported over from QB so I need to enter the base currency adjustments. In QB, it will calculate the BCA for you at the end of the year and then reverse it at the top of the following year. Makes sense. Does Zohobooks not do this as well? I created a BCA for Dec 31, 2016 but no reversing entry was made Jan 1, 2017. Am I supposed to manually do a reversal? I'm not even allowed to post journals directly to the 'exchange gain loss'
        • Please implement UAE Central Bank FX rates

          Hello, as I understand from your knowledge base, any UAE business account created from September 15, 2018 does not have foreign exchange rates fetched automatically. This is a serious inconvenience and I am not sure why ZOHO has not looked into the ways
        • Search Records returning different values than actually present

          Hey! I have this following line in my deluge script: accountSearch = zoho.crm.searchRecords("Accounts","(RS_Enroll_ID:equals:" + rsid + ")",1,200,{"cvid":864868001088693817}); info "Account search size: " + accountSearch.size(); listOfAccounts = zoho.crm.searchRecords("Accounts","(RS_Enroll_ID:equals:"
        • Next Page