엑셀 VBA에서 google 캘린더의 일본 공휴일을 얻고 목록 출력하는 방법
16470 단어 GoogleCalendarAPIVBAExcelVBA공휴일
출력 결과 이미지
VBA에서 Google 캘린더 API를 실행하여 엑셀에 이미지와 같은 휴일 목록을 출력합니다.
절차
Google Cloud Platform에서 API 키 만들기
VBA에서 google 캘린더 API를 실행하기 때문에 API를 활성화하고 API 키를 만듭니다.
Google Cloud Paltform에서 프로젝트를 이미 만든 경우 자격 증명 화면에서 API 키를 만듭니다.
(Google Cloud Paltform에서 프로젝트를 만든 적이 없는 사람은 내 과거 기사이지만 여기이 도움이 될 수 있습니다.
API 키를 작성하면 VBA에서 사용하므로 어딘가에 메모해 둡니다.
화면 오른쪽 하단의 키를 제한 링크에서 보안을 적절하게 설정할 수 있습니다.
VBA JSON을 사용하도록 설정
API 응답을 JSON으로 구문 분석하기위한 모듈이 github에 공개됩니다.
ファイル
-> ファイルのインポート
에서 다운로드한 JsonConverter.bas를 가져옵니다. ツール
-> 参照設定
에서 Microsoft Scripting Runtime 확인하십시오.VBA 코드
APIKey 변수의 내용을 방금 만든 API 키로 바꿉니다.
Main() 함수를 실행하면 출력 결과의 이미지처럼 출력됩니다.
Sub Main()
Const APIURL As String = "https://www.googleapis.com/calendar/v3/calendars/"
'日本の休日カレンダーのID
Const CalID As String = "ja.japanese#[email protected]"
Const APIKey As String = "さっき作ったAPIキーに置き換える"
'祝日を取得したい期間(2020年1月1日~12月31日)
Const StartDay As Date = #1/1/2020#
Const EndDay As Date = #12/31/2020#
'URLの作成
Dim Url As String
'APIキーと開始/終了日時をパラメータに設定
Url = APIURL & CalID & "/events?key=" & APIKey _
& "&timeMin=" & Format(StartDay, "yyyy-mm-dd") & "T00:00:00.000Z" _
& "&timeMax=" & Format(EndDay, "yyyy-mm-dd") & "T23:59:59.000Z"
'API実行
Dim Result As String
Result = GetContents(Url)
'取得結果をJSONにパース
Dim Parse As Object
Set Parse = JsonConverter.ParseJson(Result)
' A列に日にち、B列に祝日名を出力
Set Items = Parse("items")
For i = 1 To Items.Count
Set Item = Items(i)
Cells(i, 1) = Item("start")("date")
Cells(i, 2) = Item("summary")
Next i
End Sub
Function GetContents(Url As String) As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("MSXML2.XMLHTTP")
XmlHttp.Open "GET", Url, False
XmlHttp.Send
GetContents = XmlHttp.ResponseText
End Function
(참고까지) API 응답
응답의 items 안에 공휴일 정보가 들어있는 배열이 있습니다. (설날만 발췌)
이번은 start.date 와 summary 만을 엑셀에 출력했습니다만, 그 밖에도 링크라든지 이벤트 ID등이 있습니다.
{
"kind": "calendar#events",
"etag": "\"p324fvifujfjue0g\"",
"summary": "日本の祝日",
"updated": "2020-02-22T05:12:53.000Z",
"timeZone": "UTC",
"accessRole": "reader",
"defaultReminders": [],
"nextSyncToken": "CMD-u4Wz5OcCEAAYAQ==",
"items": [
{
"kind": "calendar#event",
"etag": "\"3101521598000000\"",
"id": "20200101_60o30d9l64o30c1g60o30dr56g",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=MjAyMDAxMDFfNjBvMzBkOWw2NG8zMGMxZzYwbzMwZHI1NmcgamEuamFwYW5lc2UjaG9saWRheUB2",
"created": "2019-02-21T14:53:19.000Z",
"updated": "2019-02-21T14:53:19.000Z",
"summary": "元日",
"creator": {
"email": "ja.japanese#[email protected]",
"displayName": "日本の祝日",
"self": true
},
"organizer": {
"email": "ja.japanese#[email protected]",
"displayName": "日本の祝日",
"self": true
},
"start": {
"date": "2020-01-01"
},
"end": {
"date": "2020-01-02"
},
"transparency": "transparent",
"visibility": "public",
"iCalUID": "[email protected]",
"sequence": 0
},
참고 사이트
도움을 주셔서 감사합니다 고마워요
Reference
이 문제에 관하여(엑셀 VBA에서 google 캘린더의 일본 공휴일을 얻고 목록 출력하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cazimayaa/items/f8bd1ce950d0cc218888텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)