How to Export Google Drive Permissions to a Spreadsheet or CSV
Google Drive has no built-in way to export permissions. There is no button — not in Drive, not in Google Takeout, not even in the Workspace Admin console — that produces a list of every file and who can access it. The Admin console's audit log shows sharing events, but never the current state of your Drive.
If you need that list — for a security review, a compliance audit, or an employee offboarding — you have three realistic options. This guide covers all three, then walks through the fastest one step by step.
The three ways to export Drive permissions
| Method | Effort | Coverage | Best for |
|---|---|---|---|
| Manually, file by file | Hours to days | Whatever you have patience for | A handful of specific files |
| DIY Apps Script | 1–3 hours to write, plus debugging | Depends on your script | Developers who want full control |
| DriveAuditr template | ~5 minutes of setup | My Drive, Shared Drives, and files shared with you | Everyone else |
Manual means opening each file's Share dialog and copying names into a spreadsheet. For more than ~20 files, this isn't a real option — and it goes stale the moment someone clicks "Share."
The other two deserve a closer look.
Option 1: The ready-made template (fastest)
DriveAuditr is a Google Sheets template with the export script already built in. It's free to get started, and everything runs inside your own Google account — no data leaves your Drive.
Step 1: Copy the template
Get the template (a link is emailed to you instantly) and click "Make a copy" to put it in your own Drive.
Step 2: Run the export
In your copy of the sheet:
Drive Audit → Run Audit Now
The first run asks for read-only Drive permission. The script is open source on GitHub, so you can read exactly what it does before authorizing.
The script processes your Drive in batches, so it survives Google's execution time limits even on Drives with tens of thousands of files. Check the "Audit Status" tab to watch progress; small Drives finish in minutes.
Step 3: You now have the spreadsheet
The "Drive Audit" tab fills with one row per permission. For every file you get:
| Column group | Fields |
|---|---|
| File | Name, ID, owner, type, MIME type, direct URL |
| Timestamps | Created date, modified date |
| Size | File size in bytes |
| Permission | Type (user / group / domain / anyone), role (owner / writer / commenter / reader), email, domain, display name |
Because each row is one (file, permission) pair, a file shared with three people produces three rows — which is exactly the shape you want for filtering. See how to read the permission columns for filter recipes.
Step 4: Download as CSV, Excel, or PDF
The results are already in Google Sheets, so exporting to any format is built in:
File → Download → Comma Separated Values (.csv)
File → Download → Microsoft Excel (.xlsx)
File → Download → PDF (.pdf)
CSV is the right choice for feeding another tool; Excel keeps the filters; PDF works as a point-in-time snapshot to attach to an audit or compliance ticket.
Option 2: Write your own Apps Script
If you'd rather build it yourself, Apps Script can do this: iterate over your files, read each file's permissions, and write one row per permission into the active sheet. A naive version works for a small My Drive — but before relying on it, know the gaps you'll need to close:
- The 6-minute execution limit. Apps Script kills any run after 6 minutes (30 on Workspace). A few thousand files won't finish in one run, so you need batching with checkpoints and time-based triggers to resume.
DriveApp.getFiles()skips Shared Drives. You need the Drive API advanced service withsupportsAllDrivesto cover them.getEditors()/getViewers()miss "anyone with the link". Link-sharing and domain-wide permissions only surface through the Drive API'spermissionsresource — and those are usually the permissions you most need to find.appendRow()is slow. Row-by-row writes take orders of magnitude longer than batchedsetValues()calls.
None of this is exotic, but it's a real afternoon (or three) of work. That accumulated handling is essentially what the DriveAuditr script is — batching, Shared Drive support, and full permission coverage, prewritten and open source.
What to do with the export
The most common reasons people need this spreadsheet:
- Compliance evidence. SOC 2 and ISO 27001 audits ask for proof of periodic access reviews. A dated permission export, filtered and annotated, is exactly that artifact — the full process is in Google Drive access reviews for SOC 2 & ISO 27001.
- Offboarding. Filter the
Emailcolumn by a departed employee or contractor's address to find every file they can still open — the complete process is in finding and removing someone's access. - Public-link cleanup. Filter
Permission type = anyoneto list every file exposed to the internet — the full walkthrough is in finding publicly shared files. - A recurring baseline. Use
Drive Audit → Setup Weekly Scheduleto re-export weekly, then diff against last week's CSV to spot new shares. The security audit checklist builds a repeatable process around this.
Frequently asked
Can I export permissions for my entire Google Workspace, not just my account? The export covers files the running account can see. For tenant-wide coverage, run it from a super-admin account with access to the relevant Shared Drives, or have each user run their own copy.
Does Google Takeout include permissions? No. Takeout exports file contents, not sharing settings. There's no permission data in a Takeout archive.
Does the export leave my Google account? No. The script runs in Apps Script inside your own account and writes only to your own spreadsheet. Nothing is sent to any external server.
How much does it cost? The template is free to get started for a limited number of file and permission listings. A one-time $12 license unlocks full access — no subscription.
Next steps
- See who has access to every file in your Drive — filter recipes for the exported data
- Find publicly shared Google Drive files
- Google Drive security audit checklist
Questions? Email driveauditr@terrydjony.com.