Skip to content

Every 10 minutes

Turn bug reports in a sheet into GitHub issues

Each new bug report row in your sheet becomes a GitHub issue, and the issue link is written back into the row.

Runs
Every 10 minutes
Apps
GitHub, Google Sheets
AI
Optional
Access
GitHub issues write; sheet editor

Send this to your assistant

Create a ClickRuntime automation: every 10 minutes, check my Bug reports sheet for rows without an issue link; open a GitHub issue in acme/app for each and write the link back.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A product team collects bug reports from customers and staff through a Google Form that feeds a sheet. Engineers work in GitHub, so someone copies each report across by hand, and the sheet never says what happened to a report after that.

Opening an issue for each new row and writing the link back closes the gap. Reporters and support staff can follow the link to see progress, and engineers get every report without a copy-and-paste step.

What you get out of it

  • No reports fall through

    Every row gets an issue, even on busy days. Nothing depends on someone remembering to copy it.

  • Two-way traceability

    The sheet links to the issue, and the issue quotes the row. Anyone can follow a report from either side.

  • Non-engineers can follow along

    Support staff use the sheet they know and click through to see the issue's status. They can update customers without asking engineers.

  • Cleaner issues if you want them

    With AI turned on, rough reports get a clear title and suggested labels. Engineers start with a tidy issue.

How it works

What happens, step by step

  1. Every 10 minutes, ClickRuntime reads your Bug reports sheet.

  2. It finds rows that do not have an issue link yet.

  3. If you turn on AI, it writes a clear title and suggests labels from the report.

  4. It opens a GitHub issue for each row.

  5. The issue link is written back into the row, so each report is filed once.

Before it runs live

  • Connect GitHub
  • Connect your Google Sheets account and pick the spreadsheets it may use

What you get

RunsEvery 10 minutes
Turn bug reports in a sheet into GitHub issuestoday, 9:00Succeeded
Google Sheets · Bug reportsInvoice PDF shows wrong VAT number → github.com/acme/app/issues/874

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

  • Act only on the items that match your own rules, and skip the rest
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other GitHub and Google Sheets steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
sheet_rows_github_issues.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai, report_fetched

def gh(method, path, **kw):
    resp = http.request(method, f"https://api.github.com{path}", headers={
        "Authorization": f"Bearer {credentials.connection('github', 'work')}", "Accept": "application/vnd.github+json"}, **kw)
    return resp.raise_for_status() or (resp.json() if resp.content else None)

REPO, SHEET_ID = "acme/app", "your-spreadsheet-id"

@on_trigger
def run(event):
    values = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets().values()
    rows = values.get(spreadsheetId=SHEET_ID, range="Bug reports!A2:E").execute().get("values", [])
    todo = [(i, r) for i, r in enumerate(rows, start=2) if len(r) >= 3 and (len(r) < 5 or not r[4])]
    report_fetched(len(todo))
    if not todo:
        return {"created": 0}
    for i, r in todo:
        when, reporter, report = r[0], r[1], r[2]
        title = report.splitlines()[0][:100]
        try:
            title = ai.generate(report[:3000], system="Write a short, specific GitHub issue title for this bug report.", max_output_tokens=30).text.strip()
        except (ai.AINotIncluded, ai.AILimitReached):
            pass
        issue = gh("POST", f"/repos/{REPO}/issues", json={"title": title, "labels": ["bug", "from-sheet"],
                   "body": f"Reported by {reporter} on {when}\n\n{report}"})
        values.update(spreadsheetId=SHEET_ID, range=f"Bug reports!E{i}", valueInputOption="RAW", body={"values": [[issue["html_url"]]]}).execute()
    return {"created": len(todo)}

FAQ

Common questions

Does it work with Google Forms?
Yes. Point it at the sheet your form writes to. Each new response becomes a row, and each row becomes an issue.
What goes in the issue?
The title from the report, the description, the reporter's name or email if the form collects it, and the date. Columns you name are included.
What if I delete the link from a row?
The row would be treated as new and get a second issue. Leave the link column alone, or mark the row as done in another way.
What permissions does it need?
GitHub issues write; sheet editor. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Turn bug reports in a sheet into GitHub issues” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.