API data into SheetsDevelopment & Customization

A Google Apps Script that loads data from a service's API into your Google Sheet and keeps it up to date

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 loads data from a service's API into your Google Sheet and keeps it up to date

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

Orders from your shop platform, tasks from a project service, entries from a booking system: if the service has a public API, the data can land in your Google Sheet without exporting files by hand. This Google Apps Script sends a request to the API with your own key, takes the fields you need and writes them as rows, page after page. From Standard the key sits in the script's properties, which you fill in, not in the code, and errors go to a Log tab; Premium adds only new or changed rows and a guide to running it every hour or day with a trigger. Send us a link to the API's documentation and the fields you want. A single run is limited to about six minutes, so very large imports go in parts.

What is included

  • What you getA ZIP archive with the Apps Script code and a README that shows how to add it to your sheet, put in your key and run it; the code is also shown on the order page.
  • By the documentationWritten from the API's own documentation
  • Fields you chooseOnly the columns you need, in your order
  • All pagesResults that come in pages are read to the end
  • Key kept out of the codeYou put it in the script's properties yourself
  • Readable codeWith comments, easy to add a field later

How it works

  1. 1
    TaskYou send the API documentation and the fields you need
  2. 2
    CodeWe write the script by the documentation and the guide to installing it
  3. 3
    Try itYou add your key in a copy of the sheet and run it
  4. 4
    ChangesYou ask for changes within your package and send any error message

What we need from you

The service and a link to its API documentation, the request you need (for example orders for the last 30 days) and the fields that should become columns. An example of the API's answer helps a lot: copy it from the documentation or from a test call with private values removed. How often the data should refresh and whether new rows are added or the sheet is rewritten. Never send your real API key: the README shows where you put it.

We will ask you:

  • Which service, and where is its API documentation?
  • What data do you need?
  • How often should it refresh?

Compare packages

PackagesBasicOne API call$16StandardImport with settings$33PremiumImport 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 work with any service?

With services that have a public API and let you get your own key or token. Services without an API, or ones that need a sign-in through a browser page each time, are not covered.

How often can it update?

With a time trigger, as often as every few minutes, though most data needs hourly or daily runs. The service's own request limits apply, and so do Google's limits on scripts.

Can it send data back to the service?

This offer reads data into the sheet. Writing back is possible if the API allows it; describe it in the brief and we will say whether it fits your package.

Will you get a key for me?

No. You create the key in your account with the service and put it into the script's properties yourself. We never log in to your accounts.

Did not find your answer?

Packages