Weekly
Get a weekly CSV of your responses
Every Friday you get the week's responses as a CSV, so you have your own copy.
- Runs
- Weekly
- Apps
- Typeform
- AI
- Not needed
- Access
- forms:read, responses:read
Send this to your assistant
Create a ClickRuntime automation: every Friday at 5pm, email me a CSV of this week's responses to my 'Event registration' Typeform.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Typeform results live inside Typeform, and exporting them is a manual job that gets done only when someone needs the data urgently. A researcher or operations lead who wants a copy for analysis, a client report or a safety backup has to log in, open the form, choose a date range and download a file. When the plan changes or an account is lost, history can go with it.
Every week, this pages through the responses collected over the last seven days, maps each field to a column and emails you a CSV file. Over time, the weekly files build a complete archive of your responses outside Typeform.
It works well for surveys, applications and registration forms that you need in spreadsheet form. It is dull work that is easy to forget, which is exactly why it is worth handing off.
What you get out of it
A copy outside Typeform
Weekly files in your inbox mean the data survives an account problem or a plan downgrade. You can restore your records, and you are not locked into one provider for your history.
Ready for a spreadsheet
The CSV opens in Excel or Google Sheets, with a column per question. Analysts can filter, pivot and chart immediately, without reformatting an export from another tool. Analysts can start straight away.
No manual export chore
Nobody needs to remember to log in and download a file. The export arrives regardless of who is on holiday, which is helpful for forms owned by a team and not one person.
Good for audits and compliance
Dated weekly files give a record of what was collected and when. If someone asks for evidence of an application or a consent answer, you can find it in the archive.
Easy to share with others
A weekly file can be forwarded to a client, a partner or a colleague who does not have Typeform access. They get the data without a login or a lesson in using the tool.
How it works
What happens, step by step
Once a week, ClickRuntime collects every response your Typeform received in the last seven days.
It lays the answers out in columns, one row per response, with the question titles as headers.
You get an email with the number of responses and the CSV, ready to open in Excel or Google Sheets.
Before it runs live
- Connect Typeform
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Typeform steps into one automation
Under the hood
The code that runs this automation
import csv, io
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, http, credentials, notify
FORM_ID = "EVENT_REGISTRATION_FORM_ID"
def typeform(method, path, **kw):
r = http.request(method, f"https://api.typeform.com{path}",
headers={"Authorization": f"Bearer {credentials.secret('TYPEFORM_TOKEN')}"}, **kw)
r.raise_for_status()
return r.json() if r.content else None
@on_trigger
def run(event):
fields = typeform("GET", f"/forms/{FORM_ID}")["fields"]
since = (datetime.now(timezone.utc) - timedelta(days=7)).strftime("%Y-%m-%dT%H:%M:%SZ")
items = typeform("GET", f"/forms/{FORM_ID}/responses", params={"since": since, "page_size": 1000})["items"]
out = io.StringIO()
w = csv.writer(out)
w.writerow(["submitted_at"] + [f["title"] for f in fields])
for r in items:
vals = {}
for a in r.get("answers") or []:
v = a.get(a["type"])
vals[a["field"]["id"]] = v.get("label") if isinstance(v, dict) else v
w.writerow([r["submitted_at"]] + [vals.get(f["id"], "") for f in fields])
notify.email_me(f"Event registration: {len(items)} responses this week", out.getvalue())
return {"responses": len(items)}FAQ
Common questions
Does each CSV include only that week's responses?
How are question names turned into columns?
Is it a problem if a response contains personal data?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a daily count of responses per form
Each morning you see how many responses each form got yesterday, compared with last week.
See how it worksGet warned when a form stops getting responses
If a form that normally gets responses goes quiet for a day, you hear about it so you can check it.
See how it worksGet a weekly summary of your survey answers
Each Monday you get the main themes, the overall mood and a few notable quotes from last week's responses.
See how it worksKeep exploring
Set up “Get a weekly CSV of your responses” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.