시간이 있는 일정 <-> 종일 일정 으로 변경을 시도하던 중 아래와 같은 오류를 받았습니다.{
"code": 400,
"errors": [
{
"domain": "global",
"message": "Invalid start time.",
"reason": "invalid"
}
],
"message": "Invalid start time."
}
참고 : 종일 이벤트와, 시간제 이벤트의 API 요청 형식이 다르다.
- 종일 이벤트
setDateTime: NullsetDate: 값 있음!- 시간제 이벤트
setDateTime: 값 있음!setDate: Null
// 하루종일 일정으로 변경하고싶다 -> 새로운날의 하루종일 일정으로 변경
if (wantedAllDay) {
apiEvent.setStart(
new EventDateTime()
.setDate(
new DateTime(wantedStart.toLocalDate().toString())
)
.setDateTime(null)
.setTimeZone(null)
);
apiEvent.setEnd
(
new EventDateTime()
.setDate(
new DateTime(wantedEnd.toLocalDate().toString())
)
.setDateTime(null)
.setTimeZone(null)
);
}
// 하루종일 일정으로 변경하고싶다 -> 새로운날의 하루종일 일정으로 변경
if (wantedAllDay) {
// 전일(all-day)로 바꿔야 할 경우 - 기존꺼에 업데이트 하기 때문에 Null 확실하게 처리해야 함
EventDateTime newStart = new EventDateTime()
.setDateTime(Data.NULL_DATE_TIME) // 👈 반드시 포함
.setTimeZone(null)
.setDate(
new DateTime(wantedStart.toLocalDate().toString())
);
EventDateTime newEnd = new EventDateTime()
.setDateTime(Data.NULL_DATE_TIME)
.setTimeZone(null)
.setDate(
new DateTime(wantedEnd.toLocalDate().toString())
);
apiEvent.setStart(newStart);
apiEvent.setEnd(newEnd);
}
// 바꿀 일정이 하루종일이 아닌거로 바뀔경우 -> 새로운거로 변경
else {
DateTime startDt = new DateTime(
Date.from(wantedStart.atZone(zone).toInstant())); // 2025-07-28T13:00:00+09:00
DateTime endDt = new DateTime(
Date.from(wantedEnd.atZone(zone).toInstant())); // 2025-07-28T17:00:00+09:00
apiEvent.setStart(new EventDateTime()
.setDate(Data.NULL_DATE_TIME) // 👈 반드시 포함
.setDateTime(startDt)
.setTimeZone(zone.getId()));
apiEvent.setEnd(new EventDateTime()
.setDate(Data.NULL_DATE_TIME) // 👈 반드시 포함
.setDateTime(endDt)
.setTimeZone(zone.getId()));
}
google.api.client에 정의된 Enum으로 Null처리 해줘야 확실하게 처리됨