실행 SQL ~에 Google 스프레드시트 Apps Script JDBC를 작성하지 않고
Apps Script의 JDBC 서비스는 정상적으로 작동하며, 이 페이지에서는 서비스의 모든 정보(코드, 6분 사용 제한, IP 범위, 스크립트에 포함된 비밀번호)를 투명하게 보여줍니다. 또한, 다른 방식도 소개합니다. 데이터베이스 옆에 설치된 작은 에이전트가 SQL 쿼리를 실행하고, Google Sheets 추가 기능이 해당 쿼리 결과를 스프레드시트로 가져옵니다. JavaScript도 필요 없고, 방화벽 설정도 변경할 필요가 없으며, 무료 플랜으로 이용 가능합니다.
여전히 Apps Script JDBC를 원하신다면, 솔직한 버전을 알려드리겠습니다.
구글의 JDBC 서비스 Apps Script를 MySQL, Google Cloud SQL for MySQL, PostgreSQL, Microsoft SQL Server 및 Oracle에 연결합니다. 스프레드시트 하나를 채우는 가장 간단한 스크립트는 다음과 같습니다.
기능 고객 로드() { const 소품 = 부동산 서비스.스크립트 속성 가져오기(); // 비밀번호는 코드에 포함하지 마세요 const 연결 = Jdbc.연결 가져오기('jdbc:mysql://db.example.com:3306/sales'소품.속성을 가져오다('DB_USER'), 소품.속성을 가져오다('DB_PASS')); const rs = 연결createStatement().쿼리를 실행합니다('고객 ID, 이름, 도시를 고객 목록에서 1000개로 제한'); const 행 = []; ~하는 동안 (rs.다음()) 행.푸시([rs.getString(1), rs.getString(2), rs.getString(3)]); rs.닫다(); 연결닫다(); const 시트 = 스프레드시트 앱.활성 스프레드시트 가져오기().getSheetByName('고객'); 시트.클리어컨텐츠(); 시트.범위 가져오기(1, 1, 행 길이, 3).setValues(행); }
이 예제는 MySQL을 사용합니다. 다른 엔진의 경우 연결 문자열만 변경됩니다. jdbc:postgresql://, jdbc:sqlserver:// 그리고 jdbc:oracle:thin:@ 동일한 형태를 따르며 Cloud SQL은 다음과 같은 것을 사용합니다. jdbc:google:mysql://이 작업이 실행되기 전에 데이터베이스가 Google 서버로부터의 연결을 수락해야 합니다. Google은 주소 범위를 다음과 같이 게시합니다. JSON 파일 데이터베이스 방화벽에 추가하고 지속적으로 업데이트해야 하는 설정이며, 데이터베이스는 1025번 이상의 포트에서 수신 대기해야 합니다. 실제로 문제가 되는 제한 사항은 Google의 정책에서 비롯됩니다. 할당량 페이지:
| 한계 | 개인 Google 계정 | Google Workspace 계정 |
|---|---|---|
| 스크립트 실행 시간(실행당) | 6분 | 6분 |
| 사용자 정의 함수 런타임(JDBC를 호출하는 수식) | 30초 | 30초 |
| JDBC 일일 연결 수 | 10,000 | 50,000 |
| 사용자별 동시 실행 횟수 | 30 | 30 |
| 시간 기반 트리거, 일일 총 실행 시간 | 90분 | 6시간 |
위 예제에는 두 가지 중요한 사실이 숨겨져 있습니다. 구글 자체 예제에서도 사용자 이름과 비밀번호는 코드에 일반 문자열로 전달되며, 대부분의 스크립트는 이를 그대로 복사합니다. 스크립트 속성을 이용하는 방법은 소스 코드에서 사용자 이름과 비밀번호를 숨기는 것이지만, 스크립트를 편집할 수 있는 사람은 여전히 이를 읽을 수 있습니다. 또한 모든 행은 스크립트의 메모리에 들어가야 하고 6분 안에 처리가 완료되어야 하므로, 쿼리가 느리거나 테이블 크기가 큰 경우에는 작업을 수동으로 분할해야 합니다. 테이블 크기가 작고 데이터베이스에 이미 인터넷에서 접근 가능하며 스크립트 소유자가 한 명뿐이라면 JDBC를 사용하는 것이 적합합니다. 하지만 이 페이지의 나머지 내용은 그렇지 않은 모든 사용자를 위한 것입니다.
대신 얻게 될 결과는 무엇일까요?
데이터베이스에 대한 SQL 쿼리 결과를 저장하는 Google Sheets 파일입니다. 쿼리 실행 측면 패널에 있는 버튼을 누르면 원할 때마다 최신 행을 가져올 수 있습니다. 예를 들어 다음과 같습니다.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | customer_id | 첫 번째 이름 | 성 | 국가 | 총 |
| 2 | 1042 | 마리아 | 알바레스 | 미국 | 1,284.50 |
| 3 | 1043 | 다니엘 | 오카포르 | 미국 | 612.00 |
| 4 | 1047 | 프리야 | 나이르 | 미국 | 2,090.75 |
| 5 | 1051 | 도마 | 산 | 미국 | 338.20 |
| 6 | 1056 | 루시아 | 페레이라 | 미국 | 1,455.00 |
| 7 | 1060 | 켄지 | 사토 | 미국 | 874.10 |
| 8 |
데이터베이스에서 실시간으로 확인하세요차이점은 쿼리가 실행되는 위치에 있습니다. JDBC를 사용하는 경우 Google 서버가 사용자의 데이터베이스에 연결을 설정하므로 방화벽에서 연결을 허용해야 하고 스크립트에서 암호를 보관해야 합니다. 반면 Query Streams를 사용하는 경우 Agent라는 작은 프로그램이 데이터베이스에 이미 접근할 수 있는 컴퓨터에서 실행되어 Query Streams로 나가는 연결을 한 번 설정하고 거기서 SQL 쿼리를 실행합니다. Google Sheets 추가 기능은 행을 요청하고 해당 행만 전송됩니다. 방화벽에서 아무것도 열 필요가 없으며 암호는 Agent를 통해 전송됩니다.
필요한 것
서버에 접속할 수 있는 컴퓨터의 에이전트
백그라운드에서 실행되는 작은 프로그램으로, Google Sheets에서 요청할 때 데이터베이스를 조회합니다. 일반적으로 데이터베이스 서버 자체 또는 동일 네트워크에 연결된 상시 가동 중인 컴퓨터에 저장됩니다.
본인의 연결 정보
서버 이름, 데이터베이스 이름, 그리고 해당 데이터베이스를 읽을 수 있는 사용자 이름과 비밀번호가 필요합니다. 만약 다른 사람이 데이터베이스를 관리한다면, 이 정보는 그 사람에게 문의해야 합니다.
어떤 컴퓨터가 에이전트를 갖게 되나요? 데이터베이스에 이미 접근할 수 있는 항상 켜져 있는 컴퓨터라면 무엇이든 가능합니다. 일반적으로 데이터베이스 서버 자체이거나 동일 네트워크에 있는 컴퓨터가 이에 해당합니다. Google Sheets는 어디에나 있을 수 있습니다.브라우저에서 실행됩니다.
네 단계로 설정하세요
-
계정을 만드세요
가다 my.querystreams.com Sheets에 사용하는 Google 계정으로 가입하세요. 다음을 선택하세요. 무료 계획입니다. 시험판이 아니라 실제 계획이며, 두 개의 연결과 Google Sheets에서 가져온 임시 SQL 쿼리를 포함합니다.
서버에 접속할 수 있는 컴퓨터에 에이전트를 설치하십시오.



로그인, 열기 다운로드데이터베이스에 이미 접근할 수 있는 컴퓨터(일반적으로 데이터베이스 서버 자체 또는 동일 네트워크에 연결된 상시 가동 컴퓨터)에 에이전트를 설치하십시오. 설치에는 약 1분 정도 소요되며, 이후에는 자동으로 시작됩니다.
드라이버 대신 작은 프로그램을 사용하는 이유는 무엇인가요? 에이전트는 Windows, Mac 또는 Linux용으로 한 번만 설치하면 되며(Windows에서는 약 85MB, Mac 및 Linux에서는 100MB 조금 넘는 용량), 백그라운드에서 조용히 실행됩니다. 웹 브라우저와 마찬가지로 쿼리 스트림에 암호화된 연결을 한 번만 생성하므로 방화벽 포트를 열거나 VPN을 설정할 필요가 없습니다. 데이터베이스는 사용자 네트워크에 유지되며, 필요한 경우 인터넷을 통해 행 데이터가 사용자의 위치로 전송됩니다. 사용자가 해야 할 일은 추가 기능 설치뿐입니다.
다운로드 페이지가 표시됩니다 액세스 키에이전트가 요청할 때 해당 코드를 붙여넣고 배지가 인식될 때까지 기다리세요. 쿼리 스트림에 연결됨에이전트 자체에서 할 수 있는 일은 그게 전부입니다.
-
데이터베이스 연결을 추가하세요
포털이 열려 있습니다 데이터 → 데이터 에이전트클릭 커넥터 추가 에이전트에서 데이터베이스 유형을 선택하고 호스트, 포트, 데이터베이스 및 읽기 전용 로그인 정보를 입력합니다. 클릭하세요. 테스트 연결, 그 다음에 저장연결은 몇 초 내에 에이전트에 도달합니다. 각 데이터베이스에는 정확한 필드가 포함된 고유한 안내 절차가 있습니다. MySQL, PostgreSQL, SQL Server, OracleCloud SQL, Amazon RDS 및 Azure 데이터베이스는 동일한 방식으로 연결됩니다. 에이전트가 해당 데이터베이스에 접근할 수만 있으면 됩니다.
IP 허용 목록이 없습니다. 에이전트는 네트워크 내부에서 데이터베이스에 연결하고 HTTPS를 통해 외부로 쿼리 스트림에 연결합니다. 방화벽에 추가해야 할 Google 주소 목록도 없고, 동기화해야 할 사항도 없습니다.
-
Google Sheets에서 SQL을 실행합니다
스프레드시트를 열고 Query Streams 추가 기능을 설치하세요. 아직 설치하지 않았다면 Google Workspace Marketplace에서 설치하세요. 이미 로그인되어 있는 Google 계정을 자동으로 인식하므로 별도의 로그인이 필요하지 않습니다. 측면 패널에서 클릭하세요. 쿼리 스트리머연결 방식을 선택하고 스크립트에 넣었을 SELECT 문을 그대로 붙여넣으세요.
예시 · SQL선택 고객 ID, 이름, 도시 FROM 고객 주문하다 에 의해 이름 LIMIT 1000;
아래 탭을 선택하세요 목적지 정보 클릭하고 클릭하세요 쿼리 실행행은 열 머리글 아래에 배치됩니다. 클릭하세요. 쿼리 실행 최신 데이터를 원할 때마다 다시 새로 고침하세요. 시트가 자동으로 새로 고쳐지도록 하려면 쿼리 빌더에서 쿼리를 저장하고 설정을 구성하세요. 자동화이 프로그램은 5분 간격부터 매주 간격까지 다양한 일정으로 실행됩니다.
그게 다예요. 데이터는 스프레드시트에 저장되어 있으며 한 번의 클릭으로 최신 상태를 유지할 수 있습니다. 요청하신 행 외에는 네트워크를 통해 전송된 데이터가 없습니다.
나란히 놓으면, 오직 버텨주는 것만이
| 앱스크립트 JDBC | 쿼리 스트림 | |
|---|---|---|
| 당신이 쓰는 것 | SQL을 JavaScript로 감싸는 코드 | SQL |
| 쿼리가 실행되는 위치 | 구글 서버에서 데이터베이스에 연결하는 방법 | 에이전트에서 데이터베이스 옆에 있습니다. |
| 데이터베이스 비밀번호 | 스크립트 또는 해당 속성에서 편집 권한이 있는 사람은 누구나 읽을 수 있습니다. | 에이전트에서만 표시되고, 스프레드시트 사용자는 볼 수 없습니다. |
| 방화벽 | Google에서 공개한 주소 범위와 1025번 포트 이상을 허용하세요. | 수신되는 데이터가 없습니다. 에이전트는 HTTPS를 통해 외부로 연결합니다. |
| 시간 제한 | 실행당 6분, 사용자 지정 함수는 30초 소요 | 스크립트 시간 초과가 없습니다. 에이전트가 쿼리를 실행하고 행을 스트리밍합니다. |
| 할당량 | 하루 10,000개 또는 50,000개의 JDBC 연결, 90분 또는 6시간의 트리거 시간 | 요금제별 월 데이터 허용량은 무료 요금제의 경우 5MB부터 시작합니다. |
| 동료에게 데이터를 제공하는 것 | 스크립트와 자격 증명을 함께 복사하세요. | 쿼리 결과를 공유하세요. 수신자는 해당 쿼리를 실행하지만 로그인 정보는 절대 볼 수 없습니다. |
| 일정을 새로 고치세요 | 일일 실행 시간 할당량 내 시간 기반 트리거 | 자동화, 5분 간격부터 주 단위까지 |
| 데이터베이스 | MySQL, 클라우드 SQL, 포스트그레스 SQL, SQL 서버, 오라클 | 이 다섯 가지 외에도 MariaDB, Snowflake, BigQuery, SQLite, Access, DuckDB, 파일 폴더, 그리고 Stripe, HubSpot, Shopify와 같은 API들이 있습니다. |
계획이 허용하는 것
Google Sheets 추가 기능의 임시 SQL 쿼리는 무료 플랜을 포함한 모든 플랜에서 사용할 수 있습니다. 무료 플랜에는 두 개의 연결과 월 5MB의 데이터 사용량이 포함되어 있어 위 표와 같은 테이블을 하루에 여러 번 새로 고치는 데 충분합니다. 추가 기능의 쿼리 작성기에 저장한 쿼리를 실행하는 기능은 Personal Core 플랜부터 제공되며, 동료가 공유한 쿼리는 모든 플랜에서 실행할 수 있습니다. 가격 페이지를 참조하세요. 계획별 수당에 대해서.
무료는 한 번 시작하면 계속 사용할 수 있는 플랜입니다. 체험 기간은 만료되지 않습니다. 자세한 내용은 다음에서 확인하세요. 가격 페이지.
사람들이 묻는 질문
기존 Apps Script는 그대로 두고 비밀번호 문제만 해결할 수 있을까요?
네. 위 예시처럼 사용자 이름과 암호를 스크립트 속성으로 옮기고 데이터베이스 로그인에 읽기 전용 권한을 부여하세요. 이렇게 하면 가장 심각한 문제는 해결됩니다. 하지만 6분 접속 제한, 일일 연결 할당량, 방화벽 허용 목록은 변경되지 않으므로, 여러 사람이 사용하는 스프레드시트의 경우 대부분의 사용자가 Apps Script에서 쿼리를 분리하는 것입니다.
에이전트는 데이터베이스 서버에서 실행되어야 합니까?
아니요. 데이터베이스에 접속할 수 있는 상시 가동 컴퓨터라면 무엇이든 가능합니다. 사무실 워크스테이션, 소형 가상 머신, 또는 서버 자체도 가능합니다. 단, 쿼리 스트림을 사용하려면 외부로 나가는 HTTPS 연결만 있으면 됩니다.
JDBC의 메모리 제한처럼 행 수 제한이 있나요?
에이전트는 전체 결과를 스크립트에 저장하는 대신 행 단위로 데이터를 스트리밍하므로, 실제적인 제한은 사용 중인 요금제의 데이터 허용량과 Google Sheets 자체의 제한(스프레드시트 셀 최대 2천만 개, Google의 2026년 9월 출시가 아직 적용되지 않은 계정의 경우 1천만 개)에 따라 달라집니다. 필요한 열과 날짜 범위만 선택하여 SELECT 문을 사용하면 두 가지 모두 문제없이 사용할 수 있습니다.
저는 클라우드 SQL을 사용합니다. 그게 뭔가 달라지는 점이 있나요?
에이전트가 실행되는 위치에만 설치하면 됩니다. 에이전트 주소가 승인된 공용 IP 주소를 통해 클라우드 SQL 인스턴스에 접속할 수 있는 컴퓨터 또는 가상 머신에 에이전트를 설치하거나, 동일 네트워크 내에 설치하고 MySQL, PostgreSQL 또는 SQL Server로 연결하세요. Google IP 주소 범위를 관리할 필요가 없습니다.
제가 Sheets를 사용하는 컴퓨터에 사용자 데이터베이스가 반드시 있어야 하나요?
아니요. 에이전트만 데이터베이스가 있는 위치에 있으면 됩니다. Google Sheets는 모든 기기의 브라우저에서 실행됩니다. 동일한 Google 계정으로 추가 기능을 열면 연결이 자동으로 이루어집니다.
내 데이터가 쿼리 스트림으로 복사되나요?
아니요. 에이전트는 데이터가 있는 위치에서 쿼리를 실행하고 반환된 행만 전송합니다. 그 과정에서 어떤 것도 동기화되거나 저장되지 않습니다.
무료 플랜으로 이 모든 기능을 이용할 수 있나요?
네. 무료 플랜은 만료되는 체험판이 아니라, 계속 사용하실 수 있는 플랜입니다. 자세한 내용은 해당 페이지에서 확인하세요. 가격 페이지.
시트가 자동으로 새로 고쳐지나요?
최신 행을 보려면 언제든지 '쿼리 실행'을 다시 클릭하세요. 사용자가 아무 버튼도 누르지 않고도 정기적으로 시트가 새로 고쳐지도록 하려면 쿼리 스트림 포털(스트림 → 자동화)에서 자동화를 설정하세요. 이 기능은 모든 요금제에서 사용할 수 있습니다.
관련 가이드
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

