Loading

주제

이 주제에 대한 기사를 찾을 수 없습니다.

이 주제에 대한 기사를 찾을 수 없습니다.

이 주제에 대한 기사를 찾을 수 없습니다.

API를 통해 Asana에서 모든 시간 입력 데이터를 CSV로 내보내는 방법

이 기능을 사용할 수 있는 사용자
StarterAdvancedEnterpriseEnterprise+그리고 기존 Premium비즈니스Legacy Enterprise 플랜에서 사용하실 수 있습니다

자세한 내용은 요금 페이지 를 참조하세요.

Asana의 타임시트 및 예산 을 사용하는 조직의 경우, 정확한 회계 및 급여 처리를 위해 정기적인 보고가 필수적입니다. Asana는 강력한 앱 내 보기를 제공하지만, 때로는 외부 감사 또는 월말 또는 분기말 맞춤형 처리를 위해 전체 도메인에 걸쳐 모든 시간 입력 항목을 포괄적으로 CSV로 내보내야 할 수 있습니다.

이 글에서는 Asana API를 사용하여 작업 공간 전체의 시간 항목을 집계하고 내부 요구 사항에 맞는 깔끔한 회계용 CSV로 형식을 지정하는 방법을 설명합니다.

메모 icon메모

이 가이드는 타임시트 및 예산 부가 기능 사용자를 위해 작성되었지만, 이 API 기반 내보내기 방법은 표준 Asana 작업 필드를 통해 시간을 기록하는 비부가 기능 사용자도 사용할 수 있습니다.

API를 통해 내보내는 이유는 무엇인가요?

Asana UI는 강력한 대시보드를 제공하지만, API를 통해 내보내면 다음을 할 수 있습니다.

  • 보고 자동화: 수동 클릭 없이 재무팀을 위한 월간 또는 분기별 내보내기를 예약하세요.
  • 세부 감사: 기록 관리에 필수적인 작업 상태, 우선순위, 입력 GID와 같은 특정 메타데이터에 액세스할 수 있습니다.
  • 시스템 통합: Asana 시간 데이터를 ERP 또는 급여 소프트웨어로 손쉽게 파이프링할 수 있습니다.

타깃 내보내기 형식

표준 회계 관행과의 호환성을 보장하기 위해 내보내기 스크립트는 검토자 보기 내보내기에 표시되는 것과 같이 다음 필드를 포함하는 CSV를 생성해야 합니다.

열

설명

작업 이름

시간이 기록된 작업의 제목.

시간(시간)

총 소요 시간은 분에서 소수점 이하 시간으로 변환됩니다.

날짜

업무가 수행된 특정 날짜.

제출자

시간을 기록한 팀원의 이름.

작업 GID

Asana 작업의 고유 식별자.

프로젝트 GID

상위 프로젝트의 고유 식별자.

작업 상태

작업이 현재 '진행 중'인지 '완료된' 것인지 여부.

입력 GID

특정 시간 로그의 고유 식별자입니다.

구현: Python을 통한 내보내기

"모든" 시간을 내보내려면 스크립트가 프로젝트를 반복하여 작업을 찾은 다음 작업에 대한 시간 추적 입력값 가져오기 엔드포인트를 사용하여 해당 작업에 대한 시간 입력값을 가져와야 합니다.

준비 사항

내보내기 스크립트

Python
import asana
import pandas as pd

# 클라이언트 초기화
client = asana.Client.access_token('YOUR_PERSONAL_ACCESS_TOKEN')
workspace_gid = 'YOUR_WORKSPACE_GID'

def export_domain_time():
    all_time_data = []

    # 1. 작업 공간에 있는 모든 프로젝트를 반복
    projects = client.projects.get_projects({'workspace': workspace_gid})
   
    프로젝트의 프로젝트:
        # 2. 프로젝트의 모든 작업 가져오기
        tasks = client.tasks.get_tasks_for_project(project['gid'], opt_fields=[
            '이름', 'gid', '완료된', '완료 일시', '우선순위'
        ])

        작업의 작업에 대해:
            # 3. 각 작업의 시간 입력 개를 가져옵니다
            time_entries = client.time_tracking_entries.get_time_tracking_entries_for_task(
                task['gid'],
                opt_fields=['created_by.name', 'duration_minutes', 'entered_on', 'gid']
            )

            time_entries의 입력값:
                # 소수 형식으로 시간 계산
                hours = round(entry['duration_minutes'] / 60, 2)
               
                # CSV 템플릿과 일치하도록 행을 작성합니다
                all_time_data.append({
                    "작업 이름": task['name'],
                    "시간(시간)": hours,
                    "날짜": entry['entered_on'],
                    "제출자": entry['created_by']['name'],
                    "작업 GID": task['gid'],
                    "프로젝트 GID": project['gid'],
                    "작업 상태": "완료된" if task['completed'] else "진행 중",
                    "작업 완료일": task.get('completed_at', ''),
                    "작업 우선순위": task.get('priority', ''),
                    "입력 GID": entry['gid']
                })

    # 4. CSV로 저장
    df = pd.DataFrame(all_time_data)
    df.to_csv('asana_time_export_accounting.csv', index=False)
    print("내보내기 완료: asana_time_export_accounting.csv")

export_domain_time()

대규모 도메인에 대한 중요한 고려 사항

조직 전체에 대해 이 내보내기를 실행할 때 다음 모범 사례를 참고하세요.

  • API 속도 제한: Asana에는 분당 요청 수에 대한 제한이 있습니다. 대규모 도메인의 경우 time.sleep()을 추가하거나 Asana 라이브러리의 내장 재시도 로직을 사용하는 것이 좋습니다.
  • 날짜 필터링: 월별 회계의 경우, 스크립트 내의 entered_on 필드를 사용하여 관련 기간(예: 이전 월)에 대해서만 필터링하세요.
  • 권한: 개인 액세스 토큰이 모든 관련 프로젝트에 액세스할 수 있는 서비스 계정 또는 관리자 에 속하는지 확인하여 항목이 누락되지 않도록 하세요.

타임시트 페이지에서 시간 입력 항목 내보내기

선택한 기간에 대한 시간 입력 항목을 타임시트 페이지에서 내보낼 수 있습니다. 타임시트에서 페이지 제목 옆에 있는 드롭다운 화살표를 클릭한 다음 필요한 시간 입력 항목과 일치하는 내보내기 옵션을 선택합니다.
 
  • 내 시간 입력값 CSV 내보내기 선택한 기간에 대한 본인의 시간 입력값을 내보냅니다.
  • 제출자의 시간 입력값 CSV 내보내기 는 회원님이 검토하는 사람들의 시간 입력값을 내보냅니다.
  • 모든 사람의 시간 입력값 CSV 내보내기 는 선택한 기간에 대한 조직 전체의 모든 시간 입력값을 내보냅니다. 이 옵션은 최고 관리자가 사용할 수 있습니다.
API 워크플로를 설정하지 않고 CSV 파일이 필요한 경우 근무시간 기록표 내보내기를 사용하세요. 자동 보고, 사용자 지정 처리 또는 이 문서 뒷부분에 설명된 API 응답 필드에 대한 액세스의 경우 API 방법을 사용하세요.

Ask the Community

Note icon메모

이 기사는 AI로 번역되었습니다.

번역 피드백을 보내주세요.
로드 중
API를 통해 Asana 시간 데이터를 CSV로 내보내기 | Asana 도움말 센터