Portfolio
Google Drive Organizer

I wanted rules without living in regex.

This is the organizer I run on my own 5,000+ files, on my own laptop, with a button I press in the morning.

5,000+ files guided pattern → generated matcher preview before apply manual run + undo

I could come up with the system. Keeping to it was the problem.

I used to make app scripts to reorganize things and kept getting lost.

New Rule

When

GuidedInvoice | {CLIENT} | {DATE}

Then do

Move to folderFiled / {CLIENT} / {DATE_year} / {DATE_month}
PreviewSave
3 files match
Invoice | Northwind | 2026-02-18.pdfMoved to Filed / Northwind / 2026 / 02
Invoice | Bellweather | 2026-01-09.pdfMoved to Filed / Bellweather / 2026 / 01
Invoice | Acme | 2025-12-30.pdfMoved to Filed / Acme / 2025 / 12

Pick an action. Then the files.

3 files selected
The Pile
Name Type Size Last edited Owner
lease scan but readable.pdfPDF1.2 MBMar 12, 2:14 PMme
Invoice-2024-03-15.pdfPDF84 KBMar 15, 9:02 AMme
dog insurance (the good one).pdfPDF420 KBJan 4, 11:41 AMme
Q3 but actually Q4.pptxSlides6.4 MBMar 2, 6:18 PMme
IMG_8841.jpgImage3.1 MBJun 12, 7:55 PMme

You never write the pattern. You type an example.

Type one example filename, mark the pieces that change, and the app turns them into a matcher, rename and route - then previews exactly what will happen before it touches a file.

New Rule Schedule Manual

When

Name

Location and file

Then do

1 Move to folder Filed / {CLIENT} / {DATE_year} / {DATE_month}
2 Rename {DATE} {CLIENT} invoice.{ext}

A saved rule is an argument you only have once.

A rule carries a schedule, but nothing inside the app runs on a timer. I press the button, or Cloud Scheduler does.

When no rule fits, the answer is a spreadsheet.

Some files are individually cursed. Export the folder, fix them in one pass, import it back.

Renames · The Pile inventory
B2 =CONCATENATE("FinalAllocation_", TEXT(E2,"yyyy-mm-dd"))
ABCDE
1Old nameNew nameTypeModifiedCreated
2FINAL_final2_USE_THIS.xlsx=CONCATENATE("FinalAllocation_", TEXT(E2,"yyyy-mm-dd"))Sheets2024-04-112024-04-08
3allocation (2).xlsxFinalAllocation_2024-02-19Sheets2024-02-212024-02-19
4Copy of Copy of allocation.xlsxFinalAllocation_2023-11-30Sheets2023-12-022023-11-30
5Screenshot 2024-11-03 at 2.14.07 AM.png2am-idea-that-survived.pngImage2024-11-032024-11-03
6
7
Renames
Previewed. Nothing written.

One button. Watch The Pile empty.

8 in the pile

Inbox

Invoice-2024-03-15.pdf
IMG_8841.jpg
Scan from printer (2).pdf
dog insurance (the good one).pdf
receipt from that lunch.jpg
Q3 but actually Q4.pptx
TAXES wait no that was 2022.xlsx
FINAL_final2_USE_THIS.xlsx

My Drive

2024
03 - Mar
06 - Jun
Admin
Cold
Maybe
  1. Dated things file themselves.
  2. The new name is computed in the preview. It is written only when the rule runs.
  3. Archive takes the rest.
  4. One file refuses. It goes to the spreadsheet.

Full Drive access, said plainly.

Organizing files it did not create means edit access to the whole Drive. Google's narrower permission only covers files an app made itself.

What it asks Google for

https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.email

Where things live

  • Tokens sit in a local file, not on a server I host.
  • Rules sit in a JSON file next to them.
  • Trash means Drive trash. It comes back.
  • Every movement is logged and can be undone.

What runs where

  • React in the browser, Express on localhost, the Drive API in between.
  • Preview is a read against the live Drive that writes nothing.
  • There is no scheduler. A run is a button, or a POST.