Content is user-generated and unverified.
// Google Apps Script 백엔드 코드 (Code.gs) // 웹앱 진입점 function doGet() { return HtmlService.createHtmlOutputFromFile('index') .setTitle('나의 심리적 안전기지') .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); } // 스프레드시트 가져오기 function getSpreadsheet() { return SpreadsheetApp.getActiveSpreadsheet(); } // 학생 목록 가져오기 function getStudents() { try { const ss = getSpreadsheet(); const sheet = ss.getSheetByName('시트1') || ss.getSheets()[0]; const lastRow = sheet.getLastRow(); if (lastRow < 2) { return []; } const data = sheet.getRange(2, 1, lastRow - 1, 3).getValues(); const students = []; data.forEach((row, index) => { const [classNum, studentNum, name] = row; if (name && name.toString().trim()) { students.push({ id: `${classNum}-${studentNum}`, name: `${studentNum}번 ${name}` }); } }); return students; } catch (error) { console.error('학생 목록 가져오기 오류:', error); return []; } } // 출력결과 시트 생성 또는 가져오기 function getOutputSheet() { const ss = getSpreadsheet(); let outputSheet = ss.getSheetByName('출력결과'); if (!outputSheet) { outputSheet = ss.insertSheet('출력결과'); const headers = ['타임스탬프', '번호-이름', '완성된 글']; outputSheet.getRange(1, 1, 1, headers.length).setValues([headers]); const headerRange = outputSheet.getRange(1, 1, 1, headers.length); headerRange.setBackground('#4A90E2'); headerRange.setFontColor('#FFFFFF'); headerRange.setFontWeight('bold'); headerRange.setHorizontalAlignment('center'); outputSheet.setColumnWidth(1, 150); outputSheet.setColumnWidth(2, 120); outputSheet.setColumnWidth(3, 500); } return outputSheet; } // 폼 데이터 제출 처리 function submitForm(data) { try { const outputSheet = getOutputSheet(); const timestamp = new Date(); const formattedTimestamp = Utilities.formatDate(timestamp, Session.getScriptTimeZone(), 'yyyy-MM-dd HH:mm:ss'); const newRow = [ formattedTimestamp, data.student, data.finalText ]; const lastRow = outputSheet.getLastRow(); outputSheet.getRange(lastRow + 1, 1, 1, newRow.length).setValues([newRow]); const newRowRange = outputSheet.getRange(lastRow + 1, 1, 1, newRow.length); newRowRange.setBorder(true, true, true, true, true, true); outputSheet.getRange(lastRow + 1, 3).setWrap(true); return { success: true, message: '성공적으로 저장되었습니다.' }; } catch (error) { console.error('폼 제출 오류:', error); throw new Error('데이터 저장 중 오류가 발생했습니다: ' + error.message); } }
Content is user-generated and unverified.
    Code.gs (백엔드 전용) | Claude