| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- FSM
- ChatGPT
- 소울칼리버6
- 좋은글필사하기
- Android
- DART
- jetpack compose
- Flutter
- 명언모음
- 공부집중
- Gemini
- 명상명언
- ASMR
- androidx
- javascript
- 명언
- gemini-cli
- 장자명언
- Firebase
- 오늘의역사
- Coroutine
- 오픈소스
- 이모지메모
- Linux
- 생성AI
- 파이썬
- 명심보감
- kotlin
- 코틀린
- Freesound
- Today
- Total
Vintage appMaker의 Tech Blog
[gemini] google sheet로 지역별 날씨정보 가져오기 본문
gemini에서 google sheet
google sheet에서 GAS(Google Apps Script)를 이용하여 날씨정보를 가져오기
1. 프롬프트 (1)
google sheet를 만든다.
1. 이름 "오늘의날씨"
2. 시트명 "날씨정보"
3. 기능: 시트를 열때마다 날씨정보 시트 B1에 입력된 주소값을 기준으로 날씨정보를 최종정보가 있는 B 다음행에 입력한다. B1의 기본값은 "서울시 종로구 청운동"이다.
만들어줘
2. 결과 (1)
- 생각하는 과정 표시
Google 스프레드시트에서 특정 주소의 날씨 정보를 자동으로 불러오기 위해서는 Google Apps Script를 활용해야 합니다.
사용자의 편의를 위해 API 키 발급 절차가 필요 없는(무료) Open-Meteo 날씨 서비스와 구글 자체 Maps 지오코딩 서비스를 결합한 코드를 준비했습니다.
다음 단계에 따라 진행해 주세요.
1 단계: 시트 준비하기
- 새 Google 스프레드시트를 생성합니다.
- 왼쪽 상단 파일 이름을 "오늘의날씨"로 변경합니다.
- 하단 시트 탭의 이름을 "날씨정보"로 변경합니다.
- B1 셀에 기본값인 "서울시 종로구 청운동"을 입력합니다.
- A3:E3 행에 헤더를 만듭니다 (예: 일시, 주소, 기온, 풍속, 날씨코드).
2단계: 스크립트 작성하기
- 날씨 정보를 가져오는 기능을 만들기 위해 스크립트 에디터를 엽니다.
- 메뉴에서 확장 프로그램 > Apps Script를 클릭합니다.
- 기존 코드를 모두 지우고, 아래 코드를 복사해서 붙여넣습니다.
function updateWeather() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("날씨정보");
// 1. 주소 가져오기 (B1 셀)
var addressCell = sheet.getRange("B1");
var address = addressCell.getValue();
// 주소가 비어있으면 기본값 설정
if (address === "") {
address = "서울시 종로구 청운동";
addressCell.setValue(address);
}
// 2. 구글 지도를 이용해 주소를 위도/경도로 변환 (Geocoding)
var geocoder = Maps.newGeocoder();
var response = geocoder.geocode(address);
if (response.status !== 'OK') {
sheet.appendRow([new Date(), address, "주소 확인 불가", "", ""]);
return;
}
var location = response.results[0].geometry.location;
var lat = location.lat;
var lng = location.lng;
// 3. 날씨 API 호출 (Open-Meteo, 무료/키 불필요)
var url = "https://api.open-meteo.com/v1/forecast?latitude=" + lat +
"&longitude=" + lng +
"¤t_weather=true&timezone=auto";
try {
var apiResponse = UrlFetchApp.fetch(url);
var weatherData = JSON.parse(apiResponse.getContentText()).current_weather;
// 4. 데이터 입력 (B열 다음 행에 추가)
// A열: 시간, B열: 주소, C열: 온도, D열: 풍속, E열: 날씨코드
sheet.appendRow([
new Date(),
address,
weatherData.temperature + "°C",
weatherData.windspeed + "km/h",
weatherData.weathercode
]);
} catch (e) {
sheet.appendRow([new Date(), address, "데이터 호출 실패", e.message, ""]);
}
}
3단계: 자동 실행 설정 (트리거)
구글 보안 정책 상 onOpen(단순 열기) 함수에서는 외부 API(날씨 사이트) 통신이 차단됩니다. 따라서 "설치 가능한 트리거" 를 설정해야 시트를 열 때마다 코드가 작동합니다.
- Apps Script 화면 왼쪽 메뉴에서 트리거(시계 아이콘 ⏰)를 클릭합니다.
- 오른쪽 하단 [+ 트리거 추가] 버튼을 누릅니다.
- 설정 창에서 다음과 같이 선택합니다:
- 실행할 함수: updateWeather
- 이벤트 소스: 스프레드시트
- 이벤트 유형: 열 때
- [저장] 을 누릅니다.
- 권한 검토 창이 뜨면 계정을 선택하고 [고급] > [(프로젝트 이름)으로 이동(안전하지 않음)] > [허용] 을 클릭합니다.
4단계: 테스트 및 확인
- 스프레드시트 창을 닫았다가 다시 엽니다. (또는 새로고침)
- 잠시 기다리면 "날씨정보" 시트의 데이터가 있는 마지막 행 다음 줄에 현재 날짜, B1에 입력된 주소, 그리고 기온 정보가 자동으로 입력되는 것을 확인할 수 있습니다.
💡 요약
- 기능: 시트를 열 때마다 B1의 주소를 읽어와 해당 지역의 현재 기온과 풍속을 아래 행에 계속 누적합니다.
- 참고: B1의 주소를 "부산 해운대구", "제주시" 등으로 바꾸고 시트를 다시 열면 해당 지역의 날씨가 기록됩니다.
이 기능을 테스트하기 위해 지금 바로 시트를 새로고침 해보시겠습니까?
3. 프롬프트 (2)
구글드라이브에 시트를 만들어줘
4. 결과 (2)
- 생각하는 과정 표시
죄송합니다. 저는 구글 드라이브에 직접 새로운 파일을 생성하거나 저장할 수 있는 권한이 없습니다.
대신, 앞서 안내해 드린 Google Apps Script 코드와 설정 방법을 참고하여 직접 시트를 만드실 수는 있습니다.
혹시 구글 드라이브에 이미 저장되어 있는 파일 중에서 찾고 싶은 내용이 있으신가요? 파일 검색이나 내용 확인이 필요하시다면 언제든 말씀해 주세요.
5. 수동으로 작성
gemini의 경우, google sheet를 작성하는 기능이 제공되지 않았다. 그러나 확신할 수 없다. 읽기는 분명 가능하지만 작성 기능은 어떤 조건에서 가능할 수도 있다고 추측된다(추측일 뿐이다).


'Source code or Tip > 생성AI' 카테고리의 다른 글
| [codex] image 분석 후, PDF로 만들기 (0) | 2026.01.08 |
|---|---|
| [gemini-cli] Google Stitch를 통한 빠른 웹개발 (0) | 2025.12.19 |
| [codex] pdf 에디팅하기 (0) | 2025.12.05 |
| [gemini-cli] 현재폴더의 이미지 포멧 변환 (0) | 2025.11.29 |
| [gemini] agent 기능으로 google workspace와 간단하게 연동하기 (0) | 2025.11.23 |
