Google Calendar API 사용하기 #3

시리즈



Google Calendar API 사용하기 #1
Google Calendar API 사용하기 #2

환경



IDE: VisualStudio2019
응용 프로그램: 콘솔 앱
프레임워크: .NET Core 3.1

캘린더 일정 업데이트



마지막으로 추가한 약속을 업데이트해 봅니다.

메소드는 이하의 Update를 사용하면 좋을 것 같다.
Google.Apis.Calendar.v3.EventsResource.Update


이번은, 전회의 기사의 인서트 메소드로 추가한 이벤트를 반환하도록(듯이) 해, 그 이벤트 정보를 이용해 갱신하도록(듯이) 합니다.
        /// <summary>
        /// カレンダーイベントを追加
        /// </summary>
        /// <param name="calendarId">カレンダーID</param>
        /// <returns>イベント</returns>
        public Event InsertEvent(string calendarId)
        {
            var newEvent = new Event()
            {
                Summary = "Google I/O 2020",
                Location = "神奈川県横浜市",
                Description = "テスト備考",
                Start = new EventDateTime()
                {
                    DateTime = DateTime.Parse("2020/02/28 9:00:00"),
                    TimeZone = "Asia/Tokyo",
                },
                End = new EventDateTime()
                {
                    DateTime = DateTime.Parse("2020/02/28 17:00:00"),
                    TimeZone = "Asia/Tokyo",
                },

                //以下があるとエラーになるので・・・
                //Recurrence = new string[] { "RRULE:FREQ=DAILY;COUNT=2" },
                //Attendees = new EventAttendee[] {
                //    new EventAttendee() { Email = "[email protected]" },
                //    new EventAttendee() { Email = "[email protected]" },
                //},
                //Reminders = new Event.RemindersData()
                //{
                //    UseDefault = false,
                //    Overrides = new EventReminder[] {
                //        new EventReminder() { Method = "email", Minutes = 24 * 60 },
                //        new EventReminder() { Method = "sms", Minutes = 10 },
                //    }
                //}
            };

            var request = this.Serive.Events.Insert(newEvent, calendarId);
            var createdEvent = request.Execute();
            Console.WriteLine("Event created: {0}", createdEvent.HtmlLink);

            return createdEvent;
        }

        /// <summary>
        /// イベント更新
        /// </summary>
        /// <param name="calendarId">カレンダーID</param>
        /// <param name="evt">更新対象イベント</param>
        /// <returns>更新後のイベント</returns>
        public Event UpdateEvent(string calendarId, Event evt)
        {
            evt.Summary = "Google I/O 2020 update";
            evt.Location = "東京都八王子市";
            evt.Start.DateTime = DateTime.Parse("2020/02/28 12:00:00");
            evt.End.DateTime = DateTime.Parse("2020/02/28 21:00:00");

            var request = this.Serive.Events.Update(evt, calendarId, evt.Id);

            return request.Execute();
        }

메인 엔트리측
using GoogleAPITest.Calendar;
using System;

namespace GoogleAPITest
{
    /// <summary>
    /// メインクラス
    /// </summary>
    public class Program
    {
        /// <summary>
        /// メインエントリ
        /// </summary>
        /// <param name="args">実行時引数</param>
        public static void Main(string[] args)
        {
            try
            {
                // カレンダーID
                var calendarId = "カレンダーID";

                // Googleカレンダーテストクラスインスタンス化
                var calApi = new CalendarAPITest(@"C:\job\TestProject\GoogleAPITest\testproject-269217-813bf9be17a5.json");

                // イベント読み取り
                calApi.ReadEvents(calendarId);

                // イベント追加
                var evt = calApi.InsertEvent(calendarId);

                // イベント更新
                calApi.UpdateEvent(calendarId, evt);
            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);
            }
            finally
            {
                Console.Read();
            }
        }
    }
}

동작 확인



한번 클리어 해 두는 편이 알기 쉽습니다.


실행 결과

조금 이해하기 어렵습니다.
디버깅을 실행하고 한 단계씩 이동하면서 캘린더를 보면 알기 쉽습니다.

약속 삭제



삭제도 드디어 해 봅니다.
        /// <summary>
        /// イベント削除
        /// </summary>
        /// <param name="calendarId">カレンダーID</param>
        /// <param name="eventId">イベントID</param>
        public void DeleteEvent(string calendarId, string eventId)
        {
            var request = this.Serive.Events.Delete(calendarId, eventId);
            request.Execute();
        }

메인 엔트리
using GoogleAPITest.Calendar;
using System;

namespace GoogleAPITest
{
    /// <summary>
    /// メインクラス
    /// </summary>
    public class Program
    {
        /// <summary>
        /// メインエントリ
        /// </summary>
        /// <param name="args">実行時引数</param>
        public static void Main(string[] args)
        {
            try
            {
                // カレンダーID
                var calendarId = "カレンダーID";

                // Googleカレンダーテストクラスインスタンス化
                var calApi = new CalendarAPITest(@"C:\job\TestProject\GoogleAPITest\testproject-269217-813bf9be17a5.json");

                // イベント読み取り
                calApi.ReadEvents(calendarId);

                // イベント追加
                var evt = calApi.InsertEvent(calendarId);

                // イベント更新
                evt = calApi.UpdateEvent(calendarId, evt);

                // イベント削除
                calApi.DeleteEvent(calendarId, evt.Id);
            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message);
            }
            finally
            {
                Console.Read();
            }
        }
    }
}

실행 결과

※이쪽도 이해하기 어렵기 때문에, 스텝 실행해 1행씩 확인하는 편이 좋습니다.
※삭제 처리로 불려 가는 DeleteRequest.Execute는 string를 반환값으로 돌려줍니다만, 삭제한 이벤트 ID인가와 생각이나 공문자였습니다···이므로, DeleteEvent 메소드는 void로 하고 있습니다.

결론



공식 샘플에서 CRUD의 기본은 배웠습니다. 사건이 아직 만나면 받을까 ... (클라우드 소싱)
GoogleCalendarAPI를 사용해 보십시오. 우선 여기까지 하려고 합니다.
다음 자료가 더 이상 ... docker의 불명점 조사하지 않으면 ...

좋은 웹페이지 즐겨찾기