All use cases
HR teams & internal tooling developers

Company Team Directory from Google Sheets

Build a searchable team directory by storing employee profiles in Google Sheets and exposing them as a REST API.


A team directory HR can maintain themselves

Internal team directories go stale fast. Someone changes roles, a new hire joins, a photo becomes a dead link — and the website stays wrong for months because updating it requires a developer or a CMS login that nobody remembers. With GKit SheetsAPI, HR owns the data in a Google Sheet they already manage, and the directory page reads live from that Sheet.

Sheet structure

Create a sheet named Team with these columns:

nameroledepartmentemailphotobio
Priya SharmaStaff EngineerEngineeringpriya@company.comhttps://...Priya leads platform...
Marcus WebbHead of DesignDesignmarcus@company.comhttps://...Marcus joined in 2022...

Keep one row per person. HR updates the Sheet when someone joins, changes roles, or leaves.

The API call

Fetch the Engineering department, only the fields needed for a directory card:

const res = await fetch(
  "https://sheetsapi.gkit.mreshank.com/api/spreadsheets/{userKey}/Team" +
  "?search=department:Engineering&sort=name&fields=name,role,department,photo"
);
const { data } = await res.json();

fields trims the response to only what the UI needs — useful when the Sheet has internal columns (manager, salary band) that shouldn't be public.

Rendering a directory card

data.forEach(person => {
  console.log(`${person.name} — ${person.role}`);
  // render <img src={person.photo} alt={person.name} />
});

Searching across the whole directory

Let visitors search by name or role using a single search parameter:

const query = "design";
const res = await fetch(
  `https://sheetsapi.gkit.mreshank.com/api/spreadsheets/{userKey}/Team?search=${query}&fields=name,role,department,photo`
);

SheetsAPI searches across all columns by default, so a search for design returns both people in the Design department and anyone with "design" in their role title.

Keeping it current

When a new hire starts, HR adds a row. When someone changes teams, HR edits the department cell. When someone leaves, HR deletes the row (or sets a status column to inactive and filters on ?search=status:active). The directory reflects the change on the next page load — no deploy, no CMS update, no ticket to engineering.

Why this works

HR teams are power users of Google Sheets. Asking them to log into a separate system to maintain headcount data creates friction and leads to drift. Keeping the directory in Sheets and serving it via SheetsAPI means the people closest to the data — HR — are also the ones keeping it accurate. The developer just builds the UI once and points it at the endpoint.

Connect your team Sheet and ship a directory that stays current.