데이터 수집
구글 스프레드 시트를 활용한 API서버를 만드는 코드입니다
/**
* GET 예시
* https://script.google.com/macros/s/AK.../exec?mode=write&a=10&b=20
*/
function doGet(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
/* ---------- 1) 쓰기(write) ---------- */
if (e.parameter.mode === 'write') {
const now = new Date();
const params = { ...e.parameter }; // 얕은 복사
delete params.mode; // mode 제거
/* 1-A. 헤더 준비 ─ 이미 있으면 그대로, 없으면 새로 만듦 */
let headers;
if (sheet.getLastRow() === 0) {
headers = ['timestamp', ...Object.keys(params)];
sheet.appendRow(headers);
} else {
headers = sheet.getRange(1, 1, 1, sheet.getLastColumn())
.getValues()[0]; // 1행 헤더 가져오기
/* 새 파라미터가 있다면 헤더에 열 추가 */
Object.keys(params).forEach(key => {
if (!headers.includes(key)) {
headers.push(key);
sheet.getRange(1, headers.length, 1, 1).setValue(key);
}
});
}
/* 1-B. 헤더 순서에 맞춰 값 배열 생성 */
const row = headers.map(h => {
if (h === 'timestamp') return now;
return (h in params) ? params[h] : ''; // 없는 값은 빈칸
});
sheet.appendRow(row);
return ContentService
.createTextOutput(JSON.stringify({ status: 'success', received: params }))
.setMimeType(ContentService.MimeType.JSON);
}
/* ---------- 2) 읽기(read) ---------- */
if (e.parameter.mode === 'read') {
const data = sheet.getDataRange().getValues();
const headers = data.shift();
const result = data.map(row => {
const obj = {};
headers.forEach((h, i) => obj[h] = row[i]);
return obj;
});
return ContentService
.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}
/* ---------- 3) 그 외 ---------- */
return ContentService
.createTextOutput(JSON.stringify({ status: 'no_mode', message: 'mode=write | mode=read' }))
.setMimeType(ContentService.MimeType.JSON);
}
사업자 정보 표시
메이크잇나우 | 김건욱 | (우 : 13487) 경기도 성남시 분당구 대왕판교로645번길 12 (경기창조경제혁신센터) 9층 | 사업자 등록번호 : 646-35-00394 | TEL : 070-8887-0703 | Mail : kgu0724@makeitnow.kr | 통신판매신고번호 : 2018-성남분당-0517호 | 사이버몰의 이용약관 바로가기
'메이커 자료 > ESP32 : Easy Connector' 카테고리의 다른 글
ESP32 업로드 에러 해결법 (timed out packet header) (0) | 2023.07.18 |
---|---|
ESP32 업로드 에러 해결법 (no upload port) (0) | 2023.07.17 |
[아두이노/ESP32] 스마트시티 : 얼굴인식은 어떻게 할까?_Hub AIoT 편 (0) | 2023.04.18 |
[아두이노/ESP32] 스마트시티 : 얼굴인식은 어떻게 할까?_Teachable Machine 편 (0) | 2023.04.18 |
[아두이노/ESP32] 스마트시티 : 식물상태 실시간 확인하기_OLED 편 (0) | 2023.04.17 |