아두이노와 스프레드시트 연동하기 - 구글 시트 설정

힘센캥거루
2025년 10월 8일(수정됨)
3
65

최근에 학생들과 아두이노를 이용해 학교 주변의 온도, 습도를 관측해보고 값을 분석해보기로 했다.
 
아두이노에서 측정한 데이터를 저장하려니 SD카드가 필요했고, 데이터를 확인하기 위해서는 SD카드를 빼고 다시 끼우는 번거로움이 있었다. 
 
문득 데이터를 웹상에 저장하면 어떨까 하는 생각이 들었다.
 
오늘의 글은 아두이노와 구글 시트를 연동하기 위한 그 첫번째, 구글 스프레드 시트 설정이다.

1. 구글 스프레드 시트

구글 스프레드 시트는 구글이 제공하는 무료 웹 앱이다.
 
기본적으로 브라우저에서 작동하고 공동 편집과 조회가 가능하며, apps script를 통해 https 요청으로 시트 수정이 가능하다.
 
먼저 구글에 '구글 스프레드 시트'를 검색해서 시트를 하나 만들어준다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-1

로그인을 하면 아래와 같은 창이 뜬다. 여기서 빈 스프레드시트를 눌러 시트를 하나 만들어주자.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-2

 아래와 같이 새로운 시트가 생성되었다면 먼저 아래와 같이 해보자.

  • 스프레드시트의 제목과 시트명을 영어로 바꾸어 준다.(혹시모를 오류 대비)

  • 데이터의 열 인덱스를 만들어 준다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-3아두이노와 스프레드시트 연동하기 - 구글 시트 설정-4

 이제 주소창에 있는 스프레드시트의 ID를 기억해두자. 

주소의 형식은 '/d/구글스프레드시트 ID/edit#gid=0'이다. 중간 부분을 복사해주면 된다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-5

이제 구글 스프레드시트에서 기본적인 작업은 끝났다. 이번에는 스프레드시트의 script를 설정해보자. 

2. app script 설정

시트 메뉴의 [확장 프로그램]-[Apps Script]로 들어간다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-6

 아래와 같은 창을 볼 수 있다. 이제 function이 있는 곳에 우리가 원하는 코드를 입력하면 된다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-7

 아래의 코드를 입력하자. 여기서 구글 시트의 아이디, 그리고 원하는 값의 이름은 switch, case 구문을 이용해 지정해 주어야 한다.

function doGet(e) { 
  Logger.log( JSON.stringify(e) );
  var result = 'Ok';
  if (e.parameter == 'undefined') {
    result = 'No Parameters';
  }
  else {
    var sheet_id = '자신의 구글시트 아이디'; // Spreadsheet ID
    var sheet = SpreadsheetApp.openById(sheet_id).getActiveSheet();
    var newRow = sheet.getLastRow() + 1; 
    var rowData = [];
    var Curr_Date = new Date();
    rowData[0] = Curr_Date; // Date in column A
    var Curr_Time = Utilities.formatDate(Curr_Date, "Asia/Tokyo", 'HH:mm:ss');
    rowData[1] = Curr_Time; // Time in column B
    for (var param in e.parameter) {
      Logger.log('In for loop, param=' + param);
      var value = stripQuotes(e.parameter[param]);
      Logger.log(param + ':' + e.parameter[param]);
      switch (param) {
        case 'value1':
        rowData[2] = value; 
        result = '3번째 열에 value1 값 입력'; 
        break;
        case 'value2':
        rowData[3] = value;
        result += ' ,4번째 열에 value2 값 입력'; 
        break;
        default:
        result = "unsupported parameter";
      }
    }
    Logger.log(JSON.stringify(rowData));
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
    newRange.setValues([rowData]);
  }
  return ContentService.createTextOutput(result);
}
function stripQuotes( value ) {
  return value.replace(/^["']|['"]$/g, "");
}

 입력이 끝났다면 해당 코드를 배포해주자. 우측 상단의 배포를 누른 뒤, 새 배포를 눌러준다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-8

새 배포에서 유형은 웹 앱, 액세스 권한이 있는 사용자는 모든 사용자로 변경 후 배포를 눌러준다.

만일 액세스 권한을 모든 사용자로 하지 않으면 로그인을 요구 한다. 이 때는 권한 다시 모든 사용자로 변경 해주면 된다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-9아두이노와 스프레드시트 연동하기 - 구글 시트 설정-10

 배포를 누르면 엑세스 권한을 요청한다. 액세스 승인을 누르자.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-11

 액세스 승인에 대한 창이 나오면 자신의 아이디를 클릭해준다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-12

 경고 창이 뜨는데 무시하고 아래의 Advanced를 누른다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-13

 아래에 뜨는  Go To ~ 부분을 눌러서 권한을 허가해준다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-14아두이노와 스프레드시트 연동하기 - 구글 시트 설정-15

이후 새 배포 창이 뜨면 웹 앱의 url 부분을 복사해서 설정이 제대로 되었는지 확인해 보자.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-16

3. 웹 앱 확인하기

해당 웹 앱의 URL로 GET 요청을 보내면 쿼리 스트링에 있는 데이터들을 value1, value2에 저장해준다.

주소창에서 웹 앱 주소의 맨 뒤에 아래와 같이 데이터를 붙여서 주소창에 넣은 뒤 엔터를 쳐보자. 

https://script.google.com/macros/s/구글 App Script 아이디/exec?value1="원하는값1"&value2="원하는값2"
아두이노와 스프레드시트 연동하기 - 구글 시트 설정-17

위와 같은 형태로 데이터를 전달하는 것을 쿼리 스트링이라고 한다. "?"뒤에 원하는 값들을 "&"에 이어서 붙여준다.

구글 시트에 들어가서 확인해보면 아래와 같이 데이터가 잘 전달되어 있는 것을 확인할 수 있다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-18

 텍스트가 아니라 단순한 숫자도 전달 가능하다.

아두이노와 스프레드시트 연동하기 - 구글 시트 설정-19아두이노와 스프레드시트 연동하기 - 구글 시트 설정-20

값이 잘 입력되어 있다.

4. 글을 마치며

이번 글에서는 단순히 GET요청을 통해 구글 스프레드시트에 데이터를 입력하는 방법에 대해 알아보았다.

이제 남은 것은 아두이노에서 https 통신을 통해 GET 요청을 보내는 것만 남았다.

다음 글에서 이어 써보겠다.

관련 글

마이크로비트(micro:bit)로 거미로봇 코딩하기
마이크로비트(micro:bit)로 거미로봇 코딩하기
이번에 로봇기술 관련 모임에서 무료로 강의를 하나 개설하셨다.재현고등학교에서 진행하는 마이크로 비트를 이용해 거미로봇을 제어하는 연수였다.아는 선생님께서 신청을 했는데, 당일에 업무랑 겹쳐서 나에게 자리를 양보해주셔서 참여해보기로 했다.상계역에서 걸어서 10분 거리이다...
아두이노로 RFID카드 복제하기
아두이노로 RFID카드 복제하기
오늘은 아두이노로 RFID카드를 복제하는 방법에 대해 써보려고 한다.한번 글을 쓰면 잊어버리지 않기에, 복기하는 차원에서 남긴다.1.RFID 카드의 내부 데이터 구조일반적인 RFID 카드는 MIFARE Classic 1K 카드이다.이 카드의 메모리 구조는 아래...
아두이노 ESP32로 온습도 데이터 수집하기
아두이노 ESP32로 온습도 데이터 수집하기
오늘은 아두이노 ESP32로 온습도를 측정하고 데이터를 전송하는 와이파이 백엽상을 만들어볼 것이다.해당 내용은 학교에서 진행할 16+1 수업 원고를 바탕으로 작성한 글이다.1. 준비물준비물은 간단하다.ESP32, DHT-22, 전선 3개먼저 ESP32를 간단하게 설명하...
아두이노 D1 R2 사용기
아두이노 D1 R2 사용기
그냥 아두이노 uno로 하면 될 것을, 괜히 내장 와이파이 달린거 써보겠다고 wemos d1 r2를 쓰다가 고생을 꽤나 했다.이 글은 d1 r2와 같이 핀맵핑이 다른 아두이노를 사용하는 이들을 위한 글이다.1. IDE 셋팅아두이노의 종류가 다양해서 각 보드에 맞는 보드...
맥북에서 아두이노 Timed out waiting for packet header 해결 방법
맥북에서 아두이노 Timed out waiting for packet header 해결 방법
맥북에서 아두이노 Wemos D1 R2 연결시 Timed out 문제 해결하는 방법
아두이노와 스프레드시트 연동하기 - 코드 구성하기
아두이노와 스프레드시트 연동하기 - 코드 구성하기
지난 글에서는 아두이노와 스프레드시트 연동을 위한 시트 설정에 대해 알아보았다.이번 글에서는 아두이노 D1 보드에서 https 통신을 이용한 데이터 전송 방법에 대해 알아보자.1. 아두이노 D1 보드 라이브러리 설치하기아두이노 D1 보드를 이용하기 위해선 먼저 보드 라...

댓글을 불러오는 중...