Back to ERPNext in Google Sheets
SheetXAI logo
ERPNext logo
ERPNext · Google Sheets Guide

Import Timesheet Entries Into ERPNext From a Project Hours Sheet

2026-05-13
4 min read
See the Excel version →

The Scenario

You are a project accountant. The third-party time-tracking tool your consultants use exported 200 rows of timesheet data into a Google Sheet — employee name in column A, project in B, task in C, hours in D, date in E. All of it needs to land in ERPNext as Timesheet records before you can bill clients.

ERPNext Timesheets are a particular beast. Each entry is its own document with a child table for the time log detail. The data import template has a different column order than your export. Some employee names in the export use display names that do not match the ERPNext employee ID format. And the billing configuration means you need to verify the project-task linkage is correct in ERPNext before submitting.

You have tried the data import tool before. It took three hours to get 40 rows in cleanly. There are 200 rows this month.

The bad version of the billing cycle:

  • Download ERPNext's Timesheet import template, reformat 200 rows to match
  • Discover employee names do not match ERPNext employee IDs, manually cross-reference 23 mismatches
  • Upload the batch, get 34 validation errors
  • Debug each error, fix, re-upload
  • Repeat until all 200 entries are in
  • The billing cycle is a day late because the timesheets are still not submitted.

The fast version is one prompt.

The Easy Way: One Prompt in SheetXAI

SheetXAI reads your timesheet export and creates the ERPNext Timesheet entries directly, handling the project-task-employee linkage through the API so you do not have to match formats by hand.

Open the SheetXAI sidebar and type:

Create ERPNext Timesheet entries for every row in this sheet. Column A is the employee name, column B is the project, column C is the task, column D is hours worked, and column E is the date. Write the ERPNext Timesheet document name into column F for each row. If a row fails, write the error into column F instead of skipping it.

SheetXAI processes all 200 rows, creates each Timesheet entry through the ERPNext API, and writes confirmation or error messages into column F. You know exactly which rows landed and which need attention without opening ERPNext's import log.

What You Get

200 rows of import confirmation:

  • Successful rows — the ERPNext Timesheet document name in column F
  • Failed rows — the specific error message in column F (employee not found, project does not exist, task not linked to project)
  • Targeted debugging — you fix the exact rows that failed, not the whole batch

Column F is your billing reconciliation. You can filter to successful rows, total the hours by project, and confirm the billable amounts without running a separate ERPNext report.

What If the Data Is Not Quite Ready

Time-tracking exports come in every format. SheetXAI normalizes and imports in one pass.

When the time-tracking tool exported dates in a non-standard format

The export has dates like "05/13/26" instead of "2026-05-13." ERPNext will reject them.

Reformat the dates in column E from MM/DD/YY to YYYY-MM-DD format. Then create ERPNext Timesheet entries for all rows using the corrected dates and write the document name into column F.

When some rows have fractional hours that need rounding

The tracker exports hours like "1.333" but your billing rounds to the nearest quarter hour.

Round the hours in column D to the nearest 0.25 for every row. Then create the ERPNext Timesheet entries and write the document names into column F.

When you need to filter to only billable entries before creating timesheets

Column F in the original export has a "Billable" flag. You only want to push billable rows to ERPNext.

Filter to rows where column F contains "Yes" (billable entries only). Create ERPNext Timesheet entries for those rows using employee (A), project (B), task (C), hours (D), and date (E). Write the Timesheet document name into column G. Write "NON-BILLABLE — skipped" into column G for skipped rows.

When the export has employee display names but ERPNext needs employee IDs

Your time tracker uses "Jane Smith" but ERPNext's employee ID is "HR-EMP-00042." The lookup table is in the Employees tab.

For each row, look up the employee name from column A in the Employees tab (column A = display name, column B = ERPNext employee ID). Use the matched employee ID when creating the ERPNext Timesheet entry. If no match is found, write "EMPLOYEE NOT FOUND" into column F and skip that row. Write the Timesheet document name into column F for all successfully created records.

The pattern: data format issues, lookup requirements, and the ERPNext insert are one instruction. You do not pre-clean the sheet and then run a second prompt.

Try It

Get the 7-day free trial of SheetXAI and run it against your next timesheet export. The ERPNext integration is included in every SheetXAI plan. For other project and billing workflows, see how to export ERPNext projects and tasks for resource utilisation reporting or the ERPNext in Google Sheets overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more