- 2026.11.08 Job site daily report app: capture work before the drive home
- 2026.11.08 Multi-location inventory spreadsheet: stop missing transfers
- 2026.11.06 Reconcile marketplace payouts with your orders in Google Sheets
- 2026.11.01 What to automate first in a small business office: pick one task
- 2026.10.31 Hiring someone to automate a spreadsheet: 5 questions before you sign
- 2026.10.29 Same order submitted twice at once? Stop duplicate rows in Sheets
- 2026.10.24 Slow Google Sheets script on order intake? Read once, write once
- 2026.10.20 Google Sheets CSV export drops leading zeros: keep IDs intact
- 2026.10.20 Importing orders into Google Sheets without duplicate rows
- 2026.10.16 Google Sheets automation sent the email twice? 6 trigger traps
- 2026.10.16 Stop dragging formulas down in Google Sheets (ARRAYFORMULA)
- 2026.10.15 Filter, total and sort a Google Sheet with one formula (QUERY)
- 2026.10.15 Shift swaps from a phone: one approval, and the roster updates
- 2026.10.14 Google Sheets lookup shows the wrong value: VLOOKUP vs XLOOKUP
- 2026.10.14 Expense app that logs a coffee in two taps and totals in Sheets
- 2026.10.14 Daily check-in app with CSV export you can total in Google Sheets
- 2026.10.13 Stale data on your dashboard: when 'updated' doesn't mean fresh
- 2026.07.28 Tracking staff attendance in Google Calendar: where records break
- 2026.07.26 Google Sheet shared by link: how company data quietly leaks You are here
- 2026.07.23 Form auto-reply emails that annoy customers, and how to fix them
- 2026.07.13 ChatGPT API bill higher than expected? Where the cost leaks
- 2026.06.20 Monthly SaaS bill for a simple workflow: rent it or own a tool?
- 2026.06.19 Adding AI to a work app: what it costs each month, and who pays
- 2026.06.19 Automate repetitive office work in Google Sheets with Apps Script
- 2026.06.16 Field inspection app for a small team: paper checklist to phone
- 2026.06.10 Inventory tracking in Google Sheets for one store: where it stops
- 2026.06.08 Is Google Sheets automation free? No server bill, but plan upkeep
- 2026.06.06 Outsource, DIY or SaaS for one workflow: which costs less?
Google Sheet shared by link: how company data quietly leaks
One shared Google Sheet link can leak customer and company data through copies, forgotten access and scripts. Who can still open it, and how to lock it down.
Revoking source access cannot recall a downloaded copy
A customer list goes to an outside partner as a “viewer” link. The project ends, the link doesn’t, and nobody remembers who still has it.
The answer: a viewer link can still let the whole dataset leave the company, because a copy belongs to whoever made it and old access stays until someone removes it. Apps Script running with broad permissions widens the gap. Share with named accounts instead of open links, and review access on a schedule. If shared sheets are your team’s main system, see work automation on Google Sheets.
Technical Structure of Link Sharing
Drive ACLs operate on three layers: direct file permissions, link tokens, and group inheritance. Enabling ‘anyone with the link’ publishes a token that bypasses account requirements.
Permission Model Comparison
| Type | Account Required | Post-Copy Ownership | Audit Detail | Recommendation |
|---|---|---|---|---|
| Individual | Yes | Original preserved | Full | Preferred |
| Link | No | New owner | Limited | Prohibited |
| Group | Yes | Original preserved | Full | Conditional |
Copy Creation Failure Modes
When a viewer executes ‘Make a copy’, ownership moves to the new file. Protected ranges and onEdit triggers are lost because the new owner controls the ACL. Drive API files.copy updates the owners[] array.
Protected ranges never auto-inherit to copies; run periodic Apps Script inventory scans.
Offboarding Ex-Employees
- Suspend account in Admin console
- Query Drive audit logs for files modified after termination date
- Remove from all groups
- Bulk-transfer file ownership via Apps Script
External Partner Controls
Keep link sharing off for external domains. Grant only individual accounts. Deploy Apps Script with execute-as set to ‘me’.
Apps Script Audit Snippet
function auditSharing() {
const files = DriveApp.getFiles();
while (files.hasNext()) {
const f = files.next();
const perms = Drive.Permissions.list(f.getId()).items;
// detect anyoneWithLink or external domains
}
}
Using Drive Audit Logs
Export to BigQuery or poll via Apps Script every 90 days. Alert immediately on any ‘change owner’ event.
Recurring Review Checklist
- Verify link sharing = off on all files (monthly)
- Extract external domain accounts
- Confirm 100% protected ranges coverage
- Measure Apps Script execute-as = ‘me’ ratio
- Transfer ownership from ex-employees within 7 days
When Not to Use This Approach
If policy mandates internal-domain-only files or more than 100 external editors must collaborate simultaneously, evaluate Google Workspace Enterprise DLP first.
See also: spreadsheet-inventory-limits, apps-script-automation-guide
Final review criteria
The useful question is not how many features the automation has. It is whether the workflow can be understood, recovered, and safely rerun after something goes wrong.
- Raw input is separated from the human-facing working view.
- Each run records success, failure, processed count, and error message.
- Replaying the same input does not create duplicate results.
- Permission changes, quota errors, and external API failures are visible later.
For low-risk internal tasks, that may be enough. For customer replies, booking confirmation, inventory updates, payments, or legal records, the threshold is higher: compare Apps Script against a dedicated SaaS or a small server-backed system before relying on it.
Frequently asked questions
- Can viewers still leak data by making copies even with link sharing set to viewer?
- Yes. Creating a copy transfers ownership to the new file, removing original protected ranges and Apps Script triggers.
- How do I detect ex-employee accounts still accessing sheets?
- Filter Drive audit logs for last access and sharing events, remove the account from groups, then run an Apps Script inventory scan.
- What is the least-privilege model for external partners?
- Set link sharing to 'off', grant individual accounts, restrict cells with protected ranges, and run Apps Script as 'me'.
- 2026.11.08 Job site daily report app: capture work before the drive home
- 2026.11.08 Multi-location inventory spreadsheet: stop missing transfers
- 2026.11.06 Reconcile marketplace payouts with your orders in Google Sheets
- 2026.11.01 What to automate first in a small business office: pick one task
- 2026.10.31 Hiring someone to automate a spreadsheet: 5 questions before you sign
- 2026.10.29 Same order submitted twice at once? Stop duplicate rows in Sheets
- 2026.10.24 Slow Google Sheets script on order intake? Read once, write once
- 2026.10.20 Google Sheets CSV export drops leading zeros: keep IDs intact
- 2026.10.20 Importing orders into Google Sheets without duplicate rows
- 2026.10.16 Google Sheets automation sent the email twice? 6 trigger traps
- 2026.10.16 Stop dragging formulas down in Google Sheets (ARRAYFORMULA)
- 2026.10.15 Filter, total and sort a Google Sheet with one formula (QUERY)
- 2026.10.15 Shift swaps from a phone: one approval, and the roster updates
- 2026.10.14 Google Sheets lookup shows the wrong value: VLOOKUP vs XLOOKUP
- 2026.10.14 Expense app that logs a coffee in two taps and totals in Sheets
- 2026.10.14 Daily check-in app with CSV export you can total in Google Sheets
- 2026.10.13 Stale data on your dashboard: when 'updated' doesn't mean fresh
- 2026.07.28 Tracking staff attendance in Google Calendar: where records break
- 2026.07.26 Google Sheet shared by link: how company data quietly leaks You are here
- 2026.07.23 Form auto-reply emails that annoy customers, and how to fix them
- 2026.07.13 ChatGPT API bill higher than expected? Where the cost leaks
- 2026.06.20 Monthly SaaS bill for a simple workflow: rent it or own a tool?
- 2026.06.19 Adding AI to a work app: what it costs each month, and who pays
- 2026.06.19 Automate repetitive office work in Google Sheets with Apps Script
- 2026.06.16 Field inspection app for a small team: paper checklist to phone
- 2026.06.10 Inventory tracking in Google Sheets for one store: where it stops
- 2026.06.08 Is Google Sheets automation free? No server bill, but plan upkeep
- 2026.06.06 Outsource, DIY or SaaS for one workflow: which costs less?