61 lines
1.6 KiB
Bash
61 lines
1.6 KiB
Bash
#!/bin/bash
|
|
# Kakao Calendar 일정 추가 스크립트
|
|
|
|
set -e
|
|
|
|
# 환경변수 체크
|
|
if [ -z "$KAKAO_ACCESS_TOKEN" ]; then
|
|
echo "❌ KAKAO_ACCESS_TOKEN 환경변수가 필요합니다."
|
|
exit 1
|
|
fi
|
|
|
|
# 파라미터
|
|
TITLE="$1"
|
|
START_AT="$2" # UTC format: 2026-02-11T00:00:00Z
|
|
END_AT="$3" # UTC format: 2026-02-11T23:59:59Z
|
|
ALL_DAY="${4:-true}"
|
|
DESCRIPTION="${5:-}"
|
|
|
|
if [ -z "$TITLE" ] || [ -z "$START_AT" ] || [ -z "$END_AT" ]; then
|
|
echo "❌ 사용법: $0 <제목> <시작시각(UTC)> <종료시각(UTC)> [all_day] [설명]"
|
|
echo "예시: $0 '합동생일' '2026-02-11T00:00:00Z' '2026-02-11T23:59:59Z' true"
|
|
exit 1
|
|
fi
|
|
|
|
# JSON 생성
|
|
EVENT_JSON=$(cat << EOF
|
|
{
|
|
"title": "$TITLE",
|
|
"time": {
|
|
"start_at": "$START_AT",
|
|
"end_at": "$END_AT",
|
|
"time_zone": "Asia/Seoul",
|
|
"all_day": $ALL_DAY,
|
|
"lunar": false
|
|
}$([ -n "$DESCRIPTION" ] && echo ",
|
|
\"description\": \"$DESCRIPTION\"" || echo "")
|
|
}
|
|
EOF
|
|
)
|
|
|
|
# API 호출
|
|
RESPONSE=$(curl -s -X POST "https://kapi.kakao.com/v2/api/calendar/create/event" \
|
|
-H "Authorization: Bearer $KAKAO_ACCESS_TOKEN" \
|
|
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
--data-urlencode "calendar_id=primary" \
|
|
--data-urlencode "event=$EVENT_JSON")
|
|
|
|
# 결과 확인
|
|
if echo "$RESPONSE" | jq -e '.event_id' > /dev/null 2>&1; then
|
|
EVENT_ID=$(echo "$RESPONSE" | jq -r '.event_id')
|
|
echo "✅ 일정 추가 완료"
|
|
echo "제목: $TITLE"
|
|
echo "시작: $START_AT"
|
|
echo "종료: $END_AT"
|
|
echo "ID: $EVENT_ID"
|
|
else
|
|
echo "❌ 일정 추가 실패"
|
|
echo "$RESPONSE" | jq '.'
|
|
exit 1
|
|
fi
|