📋 Apps Script 코드 (복사해서 붙여넣기)
function setupHeader(sheet) {
if (sheet.getLastRow() === 0) {
sheet.appendRow([
'등록시간', '이름', '학교/소속', '이메일', '연락처',
'창업유형 코드', '창업유형명', '표시명', '기술기반 적합도', '기술 타입',
'관심 직무', '관심 기업', '한줄 자기소개'
]);
const header = sheet.getRange(1, 1, 1, 13);
header.setBackground('#1a1a2e');
header.setFontColor('#ffffff');
header.setFontWeight('bold');
sheet.setFrozenRows(1);
sheet.setColumnWidths(1, 13, 140);
}
}
function appendData(sheet, p) {
const row = [
p.timestamp || new Date().toLocaleString('ko-KR'),
p.name || '',
p.school || '',
p.email || '',
p.phone || '',
p.mbti || '',
p.type_name || '',
p.type_display || '',
(p.tech_pct || '0') + '%',
p.tech_type || '',
p.field || '',
p.companies || '',
p.intro || ''
];
sheet.appendRow(row);
const lastRow = sheet.getLastRow();
if (lastRow % 2 === 0) {
sheet.getRange(lastRow, 1, 1, 13).setBackground('#f0f4ff');
}
}
// GET 방식 - 쿼리스트링으로 데이터 수신 (CORS 문제 없음)
function doGet(e) {
try {
const p = e.parameter;
// 테스트 요청 (name 없으면 상태 확인용)
if (!p.name) {
return ContentService
.createTextOutput(p.callback
? p.callback + '({"result":"ok","message":"STH API running"})'
: '{"result":"ok","message":"STH API running"}')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
setupHeader(sheet);
appendData(sheet, p);
const res = JSON.stringify({result:'success', name: p.name});
return ContentService
.createTextOutput(p.callback ? p.callback + '(' + res + ')' : res)
.setMimeType(ContentService.MimeType.JAVASCRIPT);
} catch(err) {
const errRes = JSON.stringify({result:'error', message: err.toString()});
return ContentService
.createTextOutput(e.parameter.callback
? e.parameter.callback + '(' + errRes + ')'
: errRes)
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
}
// POST 방식도 유지 (혹시 몰라서)
function doPost(e) {
try {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
setupHeader(sheet);
// form submit 방식 (application/x-www-form-urlencoded)
var p = e.parameter;
if (!p.name && e.postData) {
// JSON 방식도 처리
try { p = JSON.parse(e.postData.contents); } catch(ex) {}
}
appendData(sheet, p);
return ContentService
.createTextOutput(JSON.stringify({result:'success'}))
.setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService
.createTextOutput(JSON.stringify({result:'error', message: err.toString()}))
.setMimeType(ContentService.MimeType.JSON);
}
}