Google API 는 Google Workspace 의 서비스들을 Program Library 나 REST 로 접근하여 제어할 수 있는 API 이다.
Google Workspace 에서 제공하는 서비스 목록은 다음과 같다.
Google Workspace | Google for Developers
Google Workspace | Google for Developers
Google Workspace 앱을 개선하고 연결.
developers.google.com
그중 Google Drive 를 접속하기 위해 java 와 javascript 라이브러리들을 조사했다.

Google API Client Libraries 목록은 다음과 같다.
API Client Libraries | Google for Developers
API Client Libraries | Google for Developers
클라이언트 라이브러리에 액세스하여 Google 제품용 API에 대한 코딩을 쉽게 할 수 있습니다. 자바, Python, PHP, .NET 등에 대한 지원을 포함합니다.
developers.google.com
위 링크의 문서에서 JavaScript 버전이 있는데 안에 들어가보면 조금(?)의 설명과 함께 몇가지 사용 예제는 있지만 내가 원하는 API Document 는 없다.
GitHub - google/google-api-javascript-client: Google APIs Client Library for browser JavaScript, aka gapi.
GitHub - google/google-api-javascript-client: Google APIs Client Library for browser JavaScript, aka gapi.
Google APIs Client Library for browser JavaScript, aka gapi. - google/google-api-javascript-client
github.com
어차피 javascript library 를 사용하려면 "https://apis.google.com/js/api.js" 파일만 import 하면 되는데
원본 소스에 대한 별도의 배포 사이트도 없고 API Document 마저 없어서 사용하기가 참 난해하다.
열심히 찾아봤지만 없었다.

javascript 버전의 Google Drive API Library 사용 예제는 다음의 공식 문서에 나와 있다.
JavaScript quickstart | Google Drive | Google for Developers
자바스크립트 빠른 시작 | Google Drive | Google for Developers
Google Drive API에 요청을 전송하는 JavaScript 웹 애플리케이션을 만드는 방법을 알아봅니다.
developers.google.com
위 예제와 함께 stackoverflow 에서 찾은 샘플을 조합해서 file upload 까지는 성공했는데...
정확한 사용법을 몰라서 수소문을 해봤다.

먼저 stackoverflow 에서의 검색이다.
https://stackoverflow.com/search?tab=newest&q=gapi.client.drive.files.create&searchOn=3
Human verification
Stack Overflow | The World’s Largest Online Community for Developers
stackoverflow.com
열심히 찾다보면 나름의 정립을 통해 분명 API 사용법도 익숙해질거다.
하지만 그만큼 시간과 노력이 필요하고 언제 다시 사용할지 모를 지식만 쌓아놓고 시간만 허비할수도 있는데
그로 인해 의욕도 상실하고 비즈니스의 중요한 타이밍(?)도 놓치게 될 수 있다.

그래서 빠른 해결을 위해 AI에게 물어보았다.
"gapi.client.drive 의 api document 주소를 알려줘" 라고 물어보니 세가지 Chat AI (Gemini, Copilot, Clova X)모두 Google 공식 문서를 보라고 알려주었다.
REST Resource: about | Google Drive | Google for Developers
REST Resource: about | Google Drive | Google for Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 REST Resource: about 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 리소스: About 사용자, 사용
developers.google.com
javascript library 내에서 당연하게도 google rest api 를 이용하고 있어서라고 생각하는데
문제는 REST API 의 스펙을 안다고해도 javascript library 내의 class 와 function 들의 API 는 또 다르기 때문에 API Document 가 필요한건데... 그 문서를 찾을수가 없었다.
게다가 function 에 넘겨주는 파라미터들이 json 객체들이라서 어떤 구성의 param 목록이 지원되고 어떻게 설정해야 하는지에 대한 내용을 현재까지도 찾지 못하고 있다.

결국은 AI 들에게 질문을 바꿔서 나름 의미있는 답을 얻게 되었는데
function 의 실사용 예를 들어 구체적인 사용 방법을 물어보며 AI 들의 성능을 비교해 보았다.
[Prompt]
gapi.client.drive.files.create 함수의 resource 인자값 metadata 에는 어떤 설정값이 있어?
그에 대한 코파러(Copilot)의 답변
[Copilot]
`gapi.client.drive.files.create` 함수의 `resource` 인자는 파일에 대한 메타데이터를 설정하는 데 사용됩니다¹².
이 메타데이터에는 다음과 같은 설정값이 포함될 수 있습니다:
- `name`: 생성할 파일의 이름¹².
- `mimeType`: 파일의 MIME 타입¹².
- `parents`: 파일이 위치할 폴더의 ID를 포함하는 배열. 예를 들어, `'parents': ['appDataFolder']`는 파일을 앱 데이터 폴더에 생성하도록 지정합니다².
이러한 설정값 외에도 Google Drive API는 파일 메타데이터에 대한 추가적인 설정값을 제공합니다¹².
이러한 설정값은 파일의 속성을 더욱 세밀하게 제어할 수 있게 해줍니다¹².
그러나 항상 Google Drive API의 공식 문서를 참조하여 해당 설정값이 올바르게 지원되는지 확인하는 것이 좋습니다¹².
출처: Bing과의 대화, 2024. 3. 29.
(1) Create File with Google Drive Api v3 (javascript) - Stack Overflow. https://stackoverflow.com/questions/34905363/create-file-with-google-drive-api-v3-javascript.
(2) gapi.client.drive.files.create does not work - Stack Overflow. https://stackoverflow.com/questions/65945670/gapi-client-drive-files-create-does-not-work.
(3) google drive javascript api gapi.client.drive.files undefined. https://stackoverflow.com/questions/14262884/google-drive-javascript-api-gapi-client-drive-files-undefined.
(4) Getting Started | google-api-javascript-client. https://google.github.io/google-api-javascript-client/docs/start.html.
(5) undefined. https://www.googleapis.com/discovery/v1/apis/drive/v3/rest.
(6) undefined. https://www.googleapis.com/auth/drive.appdata.
(7) undefined. https://people.googleapis.com/.
그리고 클로바래(ClovaX) 의 답변
[Clova X]
gapi.client.drive.files.create 함수의 resource 인자값인 metadata에는 다음과 같은 설정값이 있습니다.
- **name**: 파일의 이름을 설정합니다. (필수)
- **mimeType**: 파일의 MIME 타입을 설정합니다. (필수)
- **parents**: 파일이 저장될 부모 폴더의 ID를 배열로 설정합니다.
- **description**: 파일의 설명을 설정합니다.
- **starred**: 파일을 즐겨찾기에 추가할지 여부를 부울 값으로 설정합니다.
- **trashed**: 파일을 휴지통에 넣을지 여부를 부울 값으로 설정합니다.
- **explicitlyTrashed**: 파일을 명시적으로 휴지통에 넣을지 여부를 부울 값으로 설정합니다.
- **properties**: 파일의 속성을 객체로 설정합니다. 속성의 이름과 값을 key-value 쌍으로 설정합니다.
metadata에 설정할 수 있는 값은 Google Drive API에서 지원하는 파일의 속성에 따라 다릅니다.
더 궁금하신 점이 있으시면 말씀해주세요.
마지막으로 잼민이(Gemini)의 답변
[Gemini]
Google Drive API 문서에 따르면, gapi.client.drive.files.create 함수의 resource 인자값 metadata에는 다음과 같은 설정값이 있습니다.
* **description** (optional) - 파일의 설명입니다.
* **mimeType** (optional) - 파일의 미디어 유형입니다.
* **parents** (optional) - 파일을 저장할 폴더의 ID 목록입니다.
* **properties** (optional) - 파일에 대한 사용자 지정 속성입니다.
* **thumbnail** (optional) - 파일의 썸네일입니다.
다음은 각 설정값에 대한 자세한 설명입니다.
* **description** (optional) - 파일의 설명은 최대 255자까지 입력할 수 있습니다. 이 설명은 파일을 검색할 때 사용됩니다.
* **mimeType** (optional) - 파일의 미디어 유형은 파일의 종류를 나타냅니다. 예를 들어, 이미지의 미디어 유형은 "image/jpeg"입니다.
* **parents** (optional) - 파일을 저장할 폴더의 ID 목록입니다. 여러 개의 폴더에 파일을 저장하려면 이 설정값을 사용합니다.
* **properties** (optional) - 파일에 대한 사용자 지정 속성을 설정하려면 이 설정값을 사용합니다. 속성의 이름과 값은 모두 문자열입니다.
* **thumbnail** (optional) - 파일의 썸네일은 최대 256KB 크기의 이미지 파일입니다. 썸네일은 파일을 검색할 때 사용됩니다.
이러한 설정값은 모두 선택 사항입니다. 설정하지 않으면 기본값이 사용됩니다.

특이한 점은 잼민이(Gemini) 의 경우 Prompt 에 코드를 구체적으로 입력하니 Google Workspace 에서 문서를 검색하여 답변을 생성하겠다고 나한테 확인창을 띄워주었다.
그렇다는건 지금까지 잼민이(Gemini) 는 내가 하는 질문에 대한 답변을 작성할때 자기네들 서비스의 문서조차 검토도 안했다는 의미로 보였다. (그래서 그렇게 엉망이었나보다)
하지만 그렇게 자기네 서비스의 문서들까지 검토했음에도 불구하고 결과적으로 내가 선택한 답변은 Copilot 의 내용이었다.
우리의 잼민이(Gemini)는 아직까지는 많이 미숙한 아이인가보다.
'Programing > GCP' 카테고리의 다른 글
Access Token 과 Google Service API 를 이용하여 Google Drive 의 파일 목록 출력하기 (1) | 2024.03.28 |
---|---|
Google Drive API 빠른 시작 샘플(java) 실행하기 (0) | 2024.03.26 |
Google ML Kit와 Firebase Machine Learning(Cloud)의 차이 (0) | 2024.03.12 |
Google Authentication(OAuth2.0) 을 이용하여 자동 로그인 구현하는 방법 (0) | 2024.03.08 |