Features

고급 기능

Asana CLI의 첨부파일, 커스텀 필드, 배치 작업, 검색 기능

고급 기능

파워 유저를 위한 기능: 파일 첨부, 커스텀 필드, JSON/CSV 파일 기반 배치 작업, 워크스페이스 전체 검색.

첨부파일

파일 업로드

bun run dev task attach TASK_ID ./document.pdf

파일은 디스크에서 스트리밍되므로 대용량 첨부파일(Asana 제한 100 MB까지)도 메모리에 모두 올리지 않고 업로드할 수 있습니다.

첨부파일 목록

bun run dev task attachment list TASK_ID

첨부파일 GID, 이름, 유형, 크기, 생성 시각이 출력됩니다.

첨부파일 다운로드

# 첨부파일의 원래 이름으로 저장
bun run dev task attachment download ATTACHMENT_ID

# 출력 경로 지정; --force는 기존 파일을 덮어씀
bun run dev task attachment download ATTACHMENT_ID --output ./downloaded.pdf --force

외부 첨부파일(예: Google Drive 링크)은 다운로드 URL이 없어 다운로드할 수 없다고 안내됩니다.

커스텀 필드

워크스페이스 커스텀 필드 목록

bun run dev custom-field list --workspace WORKSPACE_ID

--workspace를 생략하면 설정된 기본 워크스페이스를 사용합니다.

태스크의 커스텀 필드 값 목록

bun run dev task custom-field list TASK_ID

커스텀 필드 값 설정

# 텍스트 필드
bun run dev task custom-field set TASK_ID FIELD_ID "분기 리뷰"

# 숫자 필드 — 숫자로 검증됨
bun run dev task custom-field set TASK_ID FIELD_ID "42.5"

# enum 필드 — 옵션 이름(대소문자 무관) 또는 옵션 GID 사용 가능
bun run dev task custom-field set TASK_ID FIELD_ID "High"

CLI는 먼저 필드 정의를 조회한 뒤 API가 기대하는 타입으로 값을 변환합니다. 지원 타입: text, number, enum.

배치 작업

모든 배치 명령은 최대 5개의 API 호출을 동시에 실행하고, stderr에 진행률을 표시하며, 항목별 실패를 기록하되 전체 배치를 중단하지 않습니다. 실패한 항목이 있으면 종료 코드가 0이 아닙니다.

배치 업데이트 (JSON)

각 항목에는 gid가 필요하며, 나머지 키는 그대로 업데이트 API에 전달됩니다.

tasks.json
[
  { "gid": "1201234567890123", "completed": true },
  { "gid": "1201234567890124", "name": "이름 변경된 태스크", "due_on": "2026-07-01" }
]
bun run dev task batch-update --file tasks.json

배치 생성 (JSON 또는 CSV)

CSV 파일에는 헤더 행이 필요하며 빈 셀은 무시됩니다. project 열을 추가하면 해당 프로젝트에 태스크가 추가됩니다.

tasks.csv
name,notes,due_on,project
런칭 글 작성,검토용 초안,2026-07-01,1209876543210987
데모 준비,,2026-07-03,
bun run dev task batch-create --file tasks.csv --workspace WORKSPACE_ID
bun run dev task batch-create --file tasks.json

배치 삭제 (텍스트 파일)

한 줄에 태스크 GID 하나씩 작성하며, 빈 줄과 # 주석은 무시됩니다. --yes를 전달하지 않으면 대화형으로 삭제를 확인합니다.

task-ids.txt
# 삭제할 태스크
1201234567890123
1201234567890124
bun run dev task batch-delete --file task-ids.txt --yes

검색

태스크 검색

태스크 이름과 설명에 대한 전문(full-text) 검색입니다. 프리미엄 Asana 워크스페이스가 필요합니다(그렇지 않으면 API가 402 Payment Required를 반환합니다).

bun run dev search tasks "quarterly goals" --workspace WORKSPACE_ID

# 필터
bun run dev search tasks "bug" --completed false --assignee USER_ID --limit 50

Asana 검색 API는 안정적인 오프셋 페이지네이션을 지원하지 않으므로 --limit(1–100, 기본 20)으로 페이지 크기를 조절하세요.

프로젝트 검색

프로젝트 검색은 Asana의 typeahead API를 사용해 가장 관련성 높은 결과를 빠르게 반환합니다.

bun run dev search projects "Q1" --workspace WORKSPACE_ID
Copyright © 2026