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

Export Portfolio Companies From Affinity Into a Google Sheet

2026-05-14
5 min read

The Scenario

It's the first week of the quarter and you're building the LP update deck. You need a Google Sheet with every one of your 340 portfolio companies — ARR, stage, assigned partner, last-touch date — to feed the dashboard charts and the table your LP coordinator pastes into the slide template.

The bad version:

  • Open Affinity, navigate to the portfolio companies list, and start exporting — only to find the CSV doesn't include your custom fields like ARR or Stage, just the base entity data.
  • Manually open each company record, copy the custom field values, and paste them into the sheet one row at a time. You're 40 rows in after 25 minutes.
  • Realize the stage values use slightly different labels than what's in the sheet from last quarter and spend another 20 minutes normalizing the text before the charts will render correctly.

The LP update goes out next Friday. Spending three hours on data extraction is three hours you're not spending on the commentary that actually matters.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads your sheet, understands the structure, and through its built-in Affinity integration it can pull list data — including custom fields — directly into your columns. No field ID lookups, no CSV patching.

Pull all companies from my Affinity deal list including custom fields like ARR and stage and put them in this sheet starting at row 2, one company per row with columns for company name, ARR, stage, assigned partner, and last-touch date

What You Get

  • One row per portfolio company starting at row 2.
  • Columns populated: company name in A, ARR in B, stage in C, assigned partner in D, last-touch date in E.
  • Custom field values pulled directly from Affinity's list entry data — not just the base entity fields.
  • Any company missing a custom field value gets a blank cell rather than an error, so your chart references don't break.

What If the Data Is Not Quite Ready

The stage labels in Affinity don't match what your sheet expects

Pull all companies from my Affinity portfolio list into this sheet and remap the stage values as follows: "Active" → "Portfolio", "Exited" → "Realized", "Written Off" → "Written Off" — keep any unlisted stage values as-is

Some companies are missing ARR values in Affinity

Pull all companies from my Affinity portfolio list and put them in this sheet. For any company where ARR is blank, put "TBD" in column B instead of leaving it empty

You need to join data from two different Affinity lists

Pull companies from my 'Portfolio — Active' list in Affinity into rows 2 through 200 of this sheet, then pull companies from my 'Portfolio — Watch List' list into rows below that, adding a column that labels which list each company came from

Full kill-chain: normalize stage labels, fill missing ARR, flag incomplete rows, then write to the sheet

Pull all companies from my Affinity portfolio list into this sheet. Remap stage values to the standard labels in row 1. Replace blank ARR values with 0. Add a "Complete" column that marks TRUE if both ARR and stage are populated. Sort by ARR descending before writing.

The pattern is to ask for the cleanup and the pull in the same prompt — SheetXAI handles the conditional logic before writing a single row.

Try It

Get the 7-day free trial of SheetXAI and open your LP dashboard sheet, then ask it to pull your Affinity portfolio companies with the custom fields you need. If you're also tracking deal activity, see Export Open Opportunities From Affinity Into a Google Sheet or the full Affinity integration overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

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

Learn more