Loading

Ämnen

För organisationer som använder Asanas tidrapporter och budgetar är periodisk rapportering avgörande för korrekt redovisning och löneadministration. Asana erbjuder robusta vyer i appen, men ibland kan du behöva en omfattande CSV-export av alla tidsposter i hela din domän för extern granskning eller anpassad bearbetning i slutet av en månad eller ett kvartal.

Den här artikeln förklarar hur man använder Asana API för att samla tidsposter från hela arbetsytan och formatera dem till en ren, redovisningsklar CSV som matchar dina interna krav.

Anteckning iconAnteckning

Den här guiden är skräddarsydd för användare av tillägget Tidrapporter och budgetar, men den API-baserade exportmetoden är också tillgänglig för användare som inte har tillägget men som registrerar tid via Asanas standarduppgiftsfält.

Varför exportera via API?

Asana-användargränssnittet erbjuder kraftfulla paneler, men genom att exportera via API kan du göra följande:

  • Automatisera rapportering: schemalägg månatliga eller kvartalsvisa exporter för ditt ekonomiteam utan manuella klick.
  • Granska detaljer: få åtkomst till specifika metadata, till exempel uppgiftsstatus, prioritet och GID:er för poster, som är avgörande för att föra register.
  • Systemintegrering: Överför enkelt dina Asana-tidsdata till ERP- eller löneprogramvara.

Målexportformatet

För att säkerställa kompatibilitet med standardiserade redovisningsmetoder bör ditt exporterade skript skapa en CSV-fil som innehåller följande fält, så som de visas i din granskarvy för export:

Kolumn

Beskrivning

Uppgiftsnamn

Titeln på uppgiften där tiden loggades.

Tid (timmar)

Total varaktighet omvandlad från minuter till timmar.

Datum

Den specifika dag då arbetet utfördes.

Inlämnare

Namnet på teammedlemmen som loggade tiden.

Uppgifts-GID

Den unika identifieraren för Asana-uppgiften.

Projekt-GID

Den unika identifieraren för det överordnade projektet.

Uppgiftsstatus

Om uppgiften för närvarande är öppen eller slutförd.

GID för post

Den unika identifieraren för den specifika tidsloggen.

Implementering: Export via Python

För att exportera ”all” tid måste skriptet gå igenom dina projekt för att hitta uppgifter och sedan hämta tidsangivelser för dessa uppgifter med hjälp av Hämta tidsspårningsangivelser för en uppgift slutpunkt.

Förutsättningar

Exportera skriptet

Python
import Asana
import pandas som pd

# Initiera klient
client = asana.Client.access_token('YOUR_PERSONAL_ACCESS_TOKEN')
workspace_gid = 'DIN_ARBETSYTA_GID'

def export_domain_time ():
    all_time_data = []

    # 1. Iterera genom alla projekt i arbetsytan
    projects = client.projects.get_projects({'arbetsyta': workspace_gid})
   
    för projekt i projekt:
        # 2. Hämta alla uppgifter för projektet
        uppgifter = client.tasks.get_tasks_for_project(project['gid'], opt_fields=[
            'name', 'gid', 'slutförd', 'completed_at', 'priority'
        ])

        for uppgift in uppgifter:
            # 3. Hämta tidsangivelser för varje uppgift
            time_entries = client.time_tracking_entries.get_time_tracking_entries_for_task (
                task['gid'],
                opt_fields=['created_by.name', 'duration_minutes', 'entered_on', 'gid']
            )

            för inmatning i time_entries:
                # Beräkna timmar i decimalformat
                hours = round(entry['duration_minutes'] / 60, 2)
               
                # Skapa raden så att den matchar CSV-mallen
                all_time_data.append({
                    "Uppgiftsnamn": task['name'],
                    "Tid (timmar)": hours,
                    "Datum": entry['entered_on'],
                    "Inskickare": entry['created_by']['name'],
                    "Uppgiftens GID": task['gid'],
                    "Projekt-GID": project['gid'],
                    "Uppgiftsstatus": "Slutförd" om uppgift['completed'] else "Öppen",
                    "Uppgiftens slutförandedatum": task.get('completed_at', ''),
                    "Uppgiftsprioritet": task.get('prioritet', ''),
                    "Inmatnings-GID": entry['gid']
                })

    # 4. Spara till CSV
    df = pd.DataFrame(all_time_data)
    df.to_csv('asana_time_export_accounting.csv', index=False)
    print("Export slutförd: asana_time_export_accounting.csv")

export_domain_time()

Viktiga överväganden för stora domäner

När du kör den här exporten för en hel organisation bör du ha följande bästa praxis i åtanke:

  • API-hastighetsgränser: Asana har gränser för hur många förfrågningar du kan göra per minut. För stora domäner kan du lägga till time.sleep() eller använda Asana-bibliotekets inbyggda återförsökslogik.
  • Datumfiltrering: För månatlig redovisning använder du fältet entered_on i ditt skript för att endast filtrera för den relevanta perioden (t.ex. föregående månad).
  • Behörigheter: Se till att den personliga åtkomsttoken tillhör ett servicekonto eller en administratör som har åtkomst till alla relevanta projekt, så att inga poster hoppas över.

Ask the Community

Note iconAnteckning

This article has been AI-translated.

Send translation feedback.
Laddar
Exportera Asana-tidsdata till CSV via API | Asanas hjälpcenter