Google Drive tidyingDevelopment & Customization

A Google Apps Script that copies whole Drive folders, archives old files and shows what takes up space

Usually ready in 15 minutesRevisions includedQuality check
Packages
Payment protectionDetails
  • Revisions within the package are free.
  • If you do not respond within 3 days of delivery, the work is accepted automatically.

The money is reserved when you pay and released only once you accept the work.

A Google Apps Script that copies whole Drive folders, archives old files and shows what takes up space

Example result

Example for the Standard package

Merging the monthly sales files of 9 shops into one Excel report

How it is run

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Folder: sales/2026-10, 9 files found
2026-11-02 09:14:03 INFO  shop-01.csv: 1,284 rows
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 rows
2026-11-02 09:14:04 WARN  shop-07.csv: 3 rows without a price skipped (lines 88, 412, 913)
2026-11-02 09:14:05 INFO  Done: 10,412 rows -> report-2026-10.xlsx (sheets "Sales" and "Totals")

Settings, not code

The column names of each shop live in settings.ini, so a new shop or a renamed column is a line there:

[columns]
date = Date, Sale date, Day
product = Product, Item, Name
quantity = Qty, Quantity, Pcs
price = Price, Unit price

A part of the code

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Reads one shop's file and gives it the report's column names."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: no column for '{name}' (looked for {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Files: a ZIP archive with merge_sales.py (310 lines), settings.ini, requirements.txt and a README with installing Python, running the script and what each message in the log means. The client runs it on their own computer.

Client: a small chain of 9 stationery shops; each shop sends its sales for the month as a CSV or Excel file, with slightly different column names. Task: one script that reads every file in a folder, brings the columns to one shape, and writes a single Excel report with all sales and a sheet of totals by shop.

The client and all details are made up.

About this service

Google Drive has no button to copy a folder with everything inside, and after a few years a shared drive is full of old versions and files nobody can find. This Google Apps Script does the jobs Drive does not: it copies a folder with all its subfolders, lists every file in a sheet with size, owner, type and last change so you see what takes space, and from Standard moves files older than the date you set into an archive folder. Premium lists possible duplicates for you to check and can make a dated copy of a folder every month. It never deletes: files are copied or moved, and only by your rules. Files owned by others may not move. A run lasts about six minutes, so big folders go in parts. You run it in your account.

What is included

  • What you getA ZIP archive with the Apps Script code and a README that shows how to add it to a sheet, allow access and run it; the code is also shown on the order page.
  • Whole folder copiesWith every subfolder and file inside
  • A report in a sheetSize, owner, type and last change of each file
  • Archive by ageFrom Standard, old files moved by your date rule
  • Nothing deletedFiles are only copied or moved
  • Readable codeWith comments, easy to change a rule later

How it works

  1. 1
    RulesYou describe the folders and what should happen to them
  2. 2
    CodeWe write the script and the guide to installing it
  3. 3
    Try itYou run it on a test folder first and look at the report
  4. 4
    ChangesYou ask for changes within your package and send any error message

What we need from you

Which folders the script should work on (My Drive or a shared drive), what to do with them (copy, report, archive), and the rules: how old a file must be to go to the archive, where the archive folder is, what counts as a possible duplicate (same name, same size). Roughly how many files there are, who owns them (you or colleagues) and whether you use a free account or Google Workspace. A screenshot of the folder layout helps.

We will ask you:

  • Which folders, and what do you need?
  • What goes to the archive?
  • Who owns the files?
  • Anything it must never do

Compare packages

PackagesBasicOne job$16StandardTidying with settings$33PremiumDrive tool$67
Deadline1 day2 days3 days
Revisions123
Codeup to 150 linesup to 400 linesup to 1,000 lines
Files of code1up to 3up to 8
Settings fileNoYesYes
Clear error messages and a logNoYesYes
Run options and a guide to running it on a scheduleNoNoYes
Guide to installing and running it (README)YesYesYes
LanguageGoogle Apps ScriptGoogle Apps ScriptGoogle Apps Script
Order BasicOrder StandardOrder Premium

Payment protection

You pay when you order, but the money is released only for accepted work.

  • Fixed priceThe package price does not change after you pay.
  • The money is reservedWhen you pay, the amount is only reserved. It is released to the service once you accept the work.
  • Checked before deliveryEvery result goes through a quality check before it reaches you, and you see it on the order page before accepting it.
  • Free revisionsAsk for changes within your brief as many times as the package allows.
  • Acceptance after 3 daysIf within 3 days of delivery you neither accept the work nor ask for changes, it is accepted automatically. If you write in the order chat after delivery, the order waits; once we answer, we may start the 3 days again and will say so in the chat.
  • Redo or a full refundIf the result does not match your brief and the revisions did not fix it, or the work takes more than twice its deadline, write in the order chat: we will redo the work or refund the payment in full.
How it works →

Questions and answers

Will it delete duplicates or old files?

No. Old files are moved to an archive folder by your rule, and possible duplicates are only listed in the sheet, so you decide what to delete yourself.

Why can it not move some files?

Drive lets only certain people move a file, depending on who owns it and on shared drive roles. Files the script cannot move are listed in the log with the reason.

Does a copy keep sharing settings?

No: copies belong to you and are shared like any new file. The README shows how to share the copied folder again.

Do you get access to my Drive?

No. You add the script in your own account and allow it access yourself. We never log in or see your files.

Did not find your answer?

Packages