Recruitment Automation Using Google Sheets and Apps Script
- Read and write data across sheets
- Apply conditions and validations
- Sync records without duplication
- Automate candidate movement between interview stages
What is finalSyncAndMerge()?
Why finalSyncAndMerge Is Used?
- Data is split across multiple sheets
- Records need to move through stages or states
- Manual copying is inefficient or error-prone
- A single, updated record must be maintained
What the Function Typically Does
1. Accesses Multiple Sheets
2. Identifies Existing Records
- Name
- Email
- ID number
3. Updates or Inserts Data
- If record exists → updates the relevant row
- If record does not exist → inserts a new row
4. Applies Conditional Logic
- Status must be “Completed”
- Flag must be TRUE
- Required fields must be filled
5. Preserves Data Integrity
- Update only selected columns
- Avoid overwriting manual inputs
- Maintain consistent formatting
When This Function Is Useful?
- Multi-step workflows
- Status-based record movement
- Data consolidation tasks
- Automating repetitive spreadsheet work
- Creating reliable summary or final sheets
Key Benefits
- Reduces manual effort
- Prevents duplicate records
- Improves data accuracy
- Saves time
- Makes spreadsheets scalable
Step 1: Structuring Your Recruitment Pipeline in Google Sheets
Explanation of the Function:
Here, we begin by creating a new function called finalSyncAndMerge(). Inside this function, we first access the active Google Sheet using SpreadsheetApp, which allows the script to work with the current spreadsheet.
After that, we fetch the required sheets by using the getSheetByName() function, where we pass the names of the sheets representing different interview stages such as Shortlisted Candidate, Telephonic Interview, Technical Interview, and Final Interview.
Finally, we include a basic validation check to ensure that the Telephonic Interview sheet exists before proceeding, so the automation runs smoothly without errors.
- Shortlisted Candidate
- Telephonic Interview
- Technical Interview
- Final Interview
Step 2: Automating Candidate Movement with Apps Script
- Reads candidate status
- Decides eligibility
- Moves or updates data automatically
- Cleans up duplicates created by concurrent edits or app submissions
Step 3: Sync Shortlisted Candidates into Telephonic Interview
Functions used:
Explanation of this Script:
Here, we are implementing a smart synchronization process that automatically moves candidates from the Shortlisted Candidate sheet to the Telephonic Interview sheet in an intelligent way. The logic first checks whether the source sheet exists and then reads all existing candidate names from the Telephonic Interview sheet to understand who is already present. This list is stored internally so the system can avoid duplicates.
Next, the script goes through each shortlisted candidate and checks their status; only candidates whose screening status is marked as Completed are considered.
If a candidate already exists in the Telephonic Interview sheet, the system updates only the required details such as role and phone numbers, without disturbing interviewer-related data that may already be filled in. If the candidate does not exist, the system prepares their details and adds them as a new entry.
Finally, all new candidates are added in one go, ensuring the process is fast, clean, and error-free while keeping the recruitment data accurate and up to date.
What the script does:
- Checks if the candidate already exists in the Telephonic Interview sheet
- Updates only basic details like role and phone number if the candidate exists
- Preserves interviewer-entered data such as feedback and interview status
- Adds new candidates only when they do not already exist
- This script automatically update only the information of the candidate such as “Name”, “Applied Role”, “Primary Contact No”, “Alternate Contact No” from the “Shortlisted Candidate” sheet to “Telephonic Interview” sheet
Step 4: Promoting Candidates from Telephonic to Technical Interview
Functions used:
Explanation of this Script:
Here, the script handles the next stage of the hiring process, where candidates move from the Telephonic Interview sheet to the Technical Interview sheet.
First, it checks whether the Technical Interview sheet is available before continuing. Then, it reads all candidate records from the Telephonic Interview sheet and collects the names of candidates who are already present in the Technical Interview sheet to avoid duplicate entries.
The script goes through each telephonic interview record and looks for candidates whose status is marked as Selected. If a candidate meets this condition and does not already exist in the Technical Interview sheet, their key details such as name, role, feedback, next round date, and source are prepared and added as a new entry.
Finally, all eligible candidates are inserted into the Technical Interview sheet in one step, ensuring a smooth and accurate transition between interview stages without manual intervention.
What the script does:
- Checks the interview status for “Selected”
- Ensures the candidate does not already exist in the Technical Interview sheet
- Transfers only essential fields such as Name, Applied Role, Telephonic interview Feedback, and next-round date
- Uses batch operations for performance
Step 5: Moving Candidates into the Final Interview Stage
Functions used:
Explanation of this Script:
Here, the script manages the final transition in the hiring workflow, moving candidates from the Technical Interview sheet to the Final Interview sheet.
It first checks whether both the Technical and Final Interview sheets are available before proceeding. Then, it reads all candidate data from the Technical Interview sheet and gathers the names of candidates who are already present in the Final Interview sheet to avoid duplicates.
The script goes through each technical interview record and checks whether the candidate’s status is marked as Selected. If the candidate is selected, has a valid name, and does not already exist in the Final Interview sheet, their name along with the applied role is prepared and added.
Finally, all eligible candidates are inserted into the Final Interview sheet in one batch, ensuring a clean, accurate, and fully automated handoff into the final stage of the recruitment process.
What the script does:
- Status checks are performed in a case-insensitive manner
- Candidate role is preserved
- Duplicate final entries are prevented
- Only minimal, decision-ready data is transferred
Step 6: Moving Candidates into the Onboarding Process Stage
What does this formula Do?:
Execute the Apps Script:
Turning Google Sheets into a Recruitment Dashboard with ChartApps
- View job openings and candidate counts in real time
- Track how many candidates are in each interview round
- Identify bottlenecks in the hiring pipeline
- Provide role-based dashboards for HR and interviewers
Key Takeaways at a Glance
- Recruitment automation using Google Sheets eliminates manual copy-paste work and reduces human errors across interview rounds
- A well-structured recruitment tracker can function as a lightweight yet reliable Google Sheets applicant tracking system
- The custom Apps Script function finalSyncAndMerge() ensures safe syncing and merging of candidate data without creating duplicates
- Status-based logic allows candidates to move forward only when they meet defined criteria, keeping the hiring process consistent and controlled
- Interviewer feedback and manual inputs remain protected, even when automation runs multiple times
- Automated workflows make Google Sheets scalable for growing hiring needs and multi-role recruitment
- Connecting automated Google Sheets data to ChartApps transforms raw spreadsheet data into real-time, role-based recruitment dashboards
- HR teams gain instant visibility into candidate flow, interview progress, and hiring bottlenecks without sharing spreadsheets

