Integrations · OData · Excel & Power BI

Connect Artala to Excel & Power BI

Artala exposes your data as native OData feeds, and Excel and Power BI both read OData out of the box. Point them at a feed once and you get a live report that refreshes on demand — no exports to schedule, no plugin to install, no copies to keep in sync.

OData is an open standard for querying data over HTTP, and it's built into both Excel (Data → Get Data → From OData Feed) and Power BI Desktop (Get data → OData feed). Because Artala speaks OData natively, connecting is a one-time setup — after that, a single refresh pulls the current numbers. The feed is read-only, scoped to your workspace, and respects the same permissions as the app.

A common first report: approved timesheet hours. Below is the exact setup for Excel and Power BI, then a set of ready-to-paste query recipes.

The feeds you'll use most

Artala publishes 12 OData feeds. These three cover most reporting needs; the full list is in the API docs.

/odata/TimesheetWeeks

Weekly timesheet totals

One row per person per week: UserName, WeekStartDate, TotalHours, Status, ApproverName, ActionedAt. Filter Status to Approved for payroll-ready hours.

/odata/TimeEntries

Per-task time entries

Each logged entry with TaskTitle, BoardName, UserName, LoggedDate, Hours and a WeekStatus column so you can keep only approved time.

/odata/Tasks

Tasks & status

All active tasks with Title, Status, Priority, AssigneeName, DueDate, IsOverdue, CompletedAt — for delivery and workload dashboards.

Connect from Excel

You'll need a workspace API key (create one in Artala under your API key settings). Then:

  1. Open a blank query

    In Excel, go to Data → Get Data → From Other Sources → Blank Query. This opens the Power Query editor.

  2. Paste the connection

    Open Home → Advanced Editor and replace the contents with this (swap in your key):

    let
        Source = OData.Feed(
            "https://app.artala.app/odata/TimesheetWeeks",
            null,
            [Headers = [Authorization = "Bearer tb_YOUR_API_KEY"], Implementation = "2.0"]
        ),
        Approved = Table.SelectRows(Source, each [Status] = "Approved")
    in
        Approved

    The Approved step folds back into a server-side $filter, so Artala only sends the rows you want.

  3. Choose Anonymous when prompted

    Power Query may ask how to authenticate. Pick Anonymous — your key is already being sent in the header you set, so no additional credential is needed.

  4. Load & refresh

    Click Close & Load. You now have a live table of approved weekly hours. Re-pull anytime with Data → Refresh All — no re-export.

Connect from Power BI

Power BI Desktop uses the same Power Query engine, so the query is identical:

  1. New blank query

    Go to Home → Get data → Blank query, then Home → Advanced Editor.

  2. Paste the same connection

    Use the exact OData.Feed(…) snippet from the Excel steps above. Point it at whichever feed you need.

  3. Authenticate as Anonymous, then build

    Choose Anonymous, click Close & Apply, and the feed becomes a table you can drop into visuals. Refresh pulls live data; schedule it in the Power BI Service for an always-current dashboard.

A note on authentication

Use the header, not the URL

Excel and Power BI's point-and-click connectors don't have a "Bearer token" option, which is why the setup above passes the key in a Headers entry inside the query rather than through the dialog. That's deliberate.

Don't put your API key in the feed URL as a query string. Keys in URLs end up in browser history, server logs, and shared workbooks. Keeping the key in the request header keeps it out of those places.

Read-only and scoped

OData feeds can only read, never write. They return data for your workspace only and honour the same role permissions as the app, so a report can never expose more than the key's owner could already see.

Query recipes

Append any of these to a feed URL, or express them as Table.SelectRows steps in Power Query — either way the filtering runs on Artala's side.

You wantAppend to the feed URL
Approved weeks only /odata/TimesheetWeeks?$filter=Status eq 'Approved'
Approved hours since a date /odata/TimesheetWeeks?$filter=Status eq 'Approved' and WeekStartDate ge 2026-06-01
Approved hours, biggest first /odata/TimesheetWeeks?$filter=Status eq 'Approved'&$orderby=TotalHours desc
Approved time per task /odata/TimeEntries?$filter=WeekStatus eq 'Approved'&$select=BoardName,TaskTitle,UserName,LoggedDate,Hours
Overdue open tasks /odata/Tasks?$filter=IsOverdue eq true&$orderby=DueDate
Just a few columns ?$select=UserName,WeekStartDate,TotalHours,Status

Full feed list, columns, and query options are in the API documentation →

Your data, in the tools you report from

Free for up to 3 users. Create an API key and connect your first feed in minutes.

Start for free All integrations