quietwork labs

AppFolio Google Sheets Integration: 4 Ways to Connect Your Reports

By ·

Short answer

AppFolio doesn't have a built-in Google Sheets connector, but you can still keep a sheet filled with AppFolio data. Without touching the API, you can schedule a report as a CSV email and let a small Apps Script (or a no-code tool) copy each file into Sheets. On Plus or Max, which include the AppFolio API, a script or a third-party Sheets add-on can pull the data directly.

Is there an AppFolio Google Sheets integration?

Not from AppFolio. Its pricing page doesn't list Google Sheets among its features, and there's no "connect to Sheets" button inside AppFolio. What AppFolio does give you is a way to get data out: reports you can export, reports it can email on a schedule, and, on the Plus and Max plans, an API. Every working AppFolio Google Sheets setup is built on one of those three.

That gives you four practical routes, from a one-off import to a sheet that refreshes itself every morning.

Comparison of four ways to get AppFolio data into Google Sheets. Manual import needs no API and no code, but doesn't run on its own or keep history. A scheduled report plus a script needs no API, runs on its own and needs a little code. The API plus a script needs Plus or Max and more code. A Sheets add-on needs Plus or Max API credentials and no code.
Scheduled reports don't need the API; the API routes need Plus or Max.

Option 1: Export from AppFolio and import into Sheets

The quickest way, and fine for a one-off analysis:

  1. Open the report in AppFolio and set your properties, dates and columns.
  2. Choose Actions at the top of the report and export it as CSV.
  3. In Google Sheets, go to File → Import, upload the file and pick an import location.
  4. Choose Append rows to current sheet to add to a running history, or Replace current sheet to show only the latest copy. Leave the separator on Detect automatically.

If you append, add a date column first so you know which export each row came from. The weak point is obvious: someone has to do this every time, and the sheet is only as fresh as the last person who remembered.

Option 2: Scheduled reports into Sheets with Apps Script

This route doesn't need the API. AppFolio doesn't publish which plans include Scheduled Reports, so check that you see Reporting → Scheduled Reports in your account. AppFolio emails the report; Google Apps Script, the scripting tool built into Google Sheets, reads the email and writes the rows.

  1. In AppFolio, save the report with the columns you want. Then go to Reporting → Scheduled Reports → New Scheduled Report, pick the saved report, choose CSV as the format, add a recipient and a subject you can search for (e.g. "AF Daily Rent Roll"), and set a start date and frequency.
  2. Send it to the Google account that owns the sheet, ideally a shared mailbox such as reports@yourcompany.com rather than one person's inbox.
  3. In the sheet, open Extensions → Apps Script and add a function like the one below.
  4. Add a time-driven trigger so it runs every day, after the report usually arrives.
function importAppFolioReport() {
  const threads = GmailApp.search('subject:"AF Daily Rent Roll" newer_than:2d', 0, 1);
  if (!threads.length) return; // nothing new: add an alert here
  const msgs = threads[0].getMessages();
  const csv = msgs[msgs.length - 1].getAttachments()[0].getDataAsString();
  const rows = Utilities.parseCsv(csv);
  const today = new Date();
  const out = rows.slice(1).map((r) => [today].concat(r)); // snapshot date first
  if (!out.length) return; // header only: nothing to add
  const sheet = SpreadsheetApp.getActive().getSheetByName("Rent roll history");
  sheet.getRange(sheet.getLastRow() + 1, 1, out.length, out[0].length).setValues(out);
}

This is a starting point, not a finished tool. It doesn't check for duplicates, notice a missing email or handle a changed column layout. Two Google limits to know: a single run can last 6 minutes, and triggers get 90 minutes a day in total on a free Gmail account (6 hours on Google Workspace). A daily trigger set for 9 AM fires at some point between 9 and 10 AM, so schedule it with some slack after the report arrives.

Prefer no code? Zapier, Make and n8n can do the same job with a Gmail trigger and a Google Sheets action. Our AppFolio and Zapier guide walks through an example.

Option 3: The AppFolio API into Sheets

AppFolio's pricing page lists "AppFolio API (read only)" on Plus and "AppFolio API (read/write)" on Max. Core doesn't list API access. With credentials from your AppFolio admin, Apps Script's UrlFetchApp can call the API on a timer and write the response into a tab, with no email in between.

Good for: fresher data and larger portfolios. Watch for: API responses come back as JSON, so you'll write more code to turn them into rows than in option 2. Store the credentials in the script's properties, never in a cell. Our AppFolio API guide covers what each plan gets and how to request access.

Option 4: A Google Sheets add-on

The Google Workspace Marketplace has an AppFolio listing: the AppFolio to Sheets Connector by Elite Development Group. As of this guide's update date, the listing says it extracts report data "using your Property Manager Plus v1 API credentials", offers pre-built connectors for reports such as rent roll, delinquency, work orders and unit vacancy, and costs a one-time $14.99.

Three things to check before you install it:

  • You need API credentials. That puts it out of reach on Core, and on Plus or Max you'll need your AppFolio admin to issue them.
  • It's third-party. It comes from Elite Development Group, not AppFolio. Read the permissions it asks for, because your tenant and owner data passes through it.
  • Refresh and history. The listing doesn't say whether it refreshes on a schedule or keeps past snapshots, so test that before you rely on it.

Which option fits your team

Your situationBest route
One-off analysis or a quarterly owner reportManual export and File → Import
No API access, want a sheet that updates dailyScheduled report and Apps Script (or Zapier, Make, n8n)
Plus or Max, someone comfortable with codeAPI and Apps Script
Plus or Max, no developerA Marketplace add-on, or scheduled reports
You need trends over months (occupancy, delinquency)Any automated route that appends a dated snapshot

Before you build anything, check what AppFolio already does in-house. Its Winter 2024 product update added sorting, filtering and grouping to reports for all customers, plus pivot tables and charts on Plus and Max. If the goal is a chart someone looks at inside AppFolio, you may not need Sheets at all.

Getting the AppFolio sheet right

  • Keep history, don't overwrite. A rent roll replaced every morning only shows today. Appended with a date, it shows occupancy and rent trends over months.
  • Watch the number formats. Sheets can turn unit numbers like "0012" into 12 and misread negative amounts shown in parentheses. Check a few rows after the first import.
  • Lock the saved report. If someone adds a column to the report in AppFolio, every row after that shifts. Keep automation reports separate from the ones people edit, or match columns by header name.
  • Share carefully. Rent rolls and delinquency lists contain tenant names and balances. Share the sheet with named people, not "anyone with the link".
  • Alert on silence. If the report email stops arriving, you want to hear about it, not find a stale sheet two weeks later.

If you'd rather land the same data in Excel or Power BI, the steps are similar; see automating AppFolio exports to Excel and Sheets.

Skip the script: let a tool do it

RentOps Sheets Sync is our ready-made version of option 2. It runs in your own Google account, imports any scheduled AppFolio CSV report into its own tab, keeps daily snapshots, skips duplicates when a report is re-sent, and emails alerts on rules you set. It uses scheduled reports, not the API, so it works on any plan where you can schedule reports, and the free Lite edition lets you check that first. It doesn't write anything back to AppFolio.

We're not affiliated with AppFolio, Google or Elite Development Group; AppFolio, Google Sheets and other product names are trademarks of their owners. Plan details and add-on pricing are from public pages as of this guide's update date, and menu labels can vary by AppFolio version.

Frequently asked questions

Can AppFolio connect to Google Sheets?+

Not with a built-in connector. Scheduled report emails plus an Apps Script or no-code automation keep a sheet updated without API access. On Plus and Max, the AppFolio API can fill a sheet directly.

Does AppFolio have an API?+

Yes, on some plans. AppFolio's pricing page lists the AppFolio API as read-only on Plus and read/write on Max. Core doesn't list API access, so Core customers rely on report exports and scheduled reports instead.

Is there a Google Sheets add-on for AppFolio?+

There's a third-party one: the AppFolio to Sheets Connector by Elite Development Group in the Google Workspace Marketplace. It needs AppFolio API credentials, so it suits Plus and Max customers. It's a third-party product, not AppFolio's.

Is AppFolio compatible with QuickBooks?+

AppFolio has its own accounting built in, and its pricing page doesn't list a QuickBooks integration. Teams that still need QuickBooks typically export reports from AppFolio as CSV and import them, often as journal entries.

What AI does AppFolio use?+

AppFolio's built-in AI is Realm-X. The pricing page lists the Realm-X Assistant and Messages on Core and Realm-X Flows, its workflow automation, on Plus. It works inside AppFolio rather than in Google Sheets.

Your AppFolio reports, every morning.

RentOps Sheets Sync imports your scheduled reports into Google Sheets, keeps the history and emails alerts. It runs in your own Google account. One-time purchase, no calls.