// 회원 확인 또는 질문 로깅 (GET)
function doGet(e) {
var action = e.parameter.action;
// 질문 로깅
if (action === 'logQuestion') {
return logQuestion(e);
}
// 회원 확인
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('회원목록');
var name = e.parameter.name;
var col = parseInt(e.parameter.col) || 1;
if (!name) {
return jsonResponse({success: false, error: '이름 필요'});
}
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (data[i][col-1] && data[i][col-1].toString().trim() === name.trim()) {
return jsonResponse({success: true, verified: true});
}
}
return jsonResponse({success: true, verified: false});
}
// 질문 로깅 함수
function logQuestion(e) {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('질문내용');
// 시트가 없으면 생성
if (!sheet) {
sheet = ss.insertSheet('질문내용');
sheet.appendRow(['날짜', '이름', '질문1', '질문2', '질문3', '질문4', '질문5', '질문6', '질문7', '질문8', '질문9', '질문10']);
}
var name = e.parameter.name;
var question = e.parameter.question;
var questionNum = parseInt(e.parameter.questionNum) || 1;
var sessionId = e.parameter.sessionId;
var timestamp = e.parameter.timestamp;
// 기존 세션이 있으면 해당 행 업데이트
if (sessionId) {
var row = parseInt(sessionId);
var colIndex = questionNum + 2; // 질문1은 3번째 열(C열)
if (colIndex <= 12) { // 최대 10개 질문
sheet.getRange(row, colIndex).setValue(question);
}
return jsonResponse({success: true, sessionId: sessionId});
}
// 새 세션: 새 행 추가
var lastRow = sheet.getLastRow() + 1;
sheet.getRange(lastRow, 1).setValue(timestamp); // 날짜
sheet.getRange(lastRow, 2).setValue(name); // 이름
sheet.getRange(lastRow, 3).setValue(question); // 질문1
return jsonResponse({success: true, sessionId: lastRow.toString()});
} catch(err) {
return jsonResponse({success: false, error: err.toString()});
}
}
// 회원 등록 (POST)
function doPost(e) {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('회원목록');
var data = JSON.parse(e.postData.contents);
// 중복 체크
var existing = sheet.getDataRange().getValues();
for (var i = 1; i < existing.length; i++) {
if (existing[i][0] && existing[i][0].toString().trim() === data.name.trim()) {
return jsonResponse({success: false, error: '이미 등록된 회원입니다.'});
}
}
// 새 회원 추가
sheet.appendRow([
data.name,
data.phone,
data.coach || '',
new Date().toLocaleString('ko-KR')
]);
return jsonResponse({success: true, message: '회원 등록 완료!'});
} catch(err) {
return jsonResponse({success: false, error: err.toString()});
}
}
function jsonResponse(obj) {
return ContentService.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
}
중요: 스프레드시트에 2개 시트 필요: 회원목록: 이름 | 연락처 | 담당코치 | 등록일시 질문내용: 자동 생성됨 (날짜 | 이름 | 질문1~10)