# v5: GemEgg 예실관리 - 예산입력시트 구현 ## 예산입력시트 상세 구현 ### Node.js 구현 코드 ```javascript async function setupBudgetSheet(sheets) { const sheetName = '予算入力'; // 헤더 행 생성 const headerRow1 = ['', '予算入力シート']; const headerRow3 = ['', '単位:円']; const headerRow4 = ['', '項目', ...MONTHS, '期間累計']; // 항목 행 생성 const itemRows = PL_ITEMS.map(item => { const indent = ' '.repeat(item.level); const row = [indent, item.name]; // 12개월 + 기간누계 for (let i = 0; i < MONTHS.length + 1; i++) { row.push(''); } return row; }); const allRows = [headerRow1, [], headerRow3, headerRow4, ...itemRows]; // 데이터 쓰기 await sheets.spreadsheets.values.update({ spreadsheetId: SPREADSHEET_ID, range: `'${sheetName}'!A1`, valueInputOption: 'USER_ENTERED', requestBody: { values: allRows } }); } ``` ### 손익계산서 항목 목록 ```javascript const PL_ITEMS = [ { level: 0, name: '売上高' }, { level: 1, name: '売上高' }, { level: 0, name: '売上高 計' }, { level: 1, name: '売上原価' }, { level: 0, name: '売上総損益金額' }, { level: 1, name: '販売管理費' }, { level: 2, name: '役員報酬' }, { level: 2, name: '給料手当' }, { level: 2, name: '法定福利費' }, { level: 2, name: '福利厚生費' }, { level: 2, name: '広告宣伝費' }, { level: 2, name: '交際費' }, { level: 2, name: '会議費' }, { level: 2, name: '旅費交通費' }, { level: 2, name: '通信費' }, { level: 2, name: '消耗品費' }, { level: 2, name: '水道光熱費' }, { level: 2, name: '支払手数料' }, { level: 2, name: '地代家賃' }, { level: 2, name: '租税公課' }, { level: 2, name: '支払報酬料' }, { level: 2, name: '雑費' }, { level: 1, name: '販売管理費 計' }, { level: 0, name: '営業損益金額' }, { level: 0, name: '経常損益金額' }, { level: 0, name: '当期純損益金額' }, ]; ``` ### 서식 적용 ```javascript // 타이틀 서식 { repeatCell: { range: { sheetId, startRowIndex: 0, endRowIndex: 1, startColumnIndex: 1, endColumnIndex: 2 }, cell: { userEnteredFormat: { textFormat: { fontSize: 14, bold: true } } }, fields: 'userEnteredFormat.textFormat' } } // 헤더 배경색 { repeatCell: { range: { sheetId, startRowIndex: 3, endRowIndex: 4, startColumnIndex: 1, endColumnIndex: 15 }, cell: { userEnteredFormat: { backgroundColor: { red: 0.29, green: 0.53, blue: 0.91 }, textFormat: { foregroundColor: { red: 1, green: 1, blue: 1 }, bold: true } } }, fields: 'userEnteredFormat.backgroundColor,userEnteredFormat.textFormat' } } ``` ## 결과 화면 ``` ┌──────────────────────────────────────────────────────────────────┐ │ │ 予算入力シート │ ├───┼──────────────────────────────────────────────────────────────┤ │ │ │ │ │ 単位:円 │ │ │ 項目 │2025-04 │2025-05 │...│2026-03 │期間累計 │ ├───┼──────────────────┼────────┼────────┼───┼────────┼───────────┤ │ │ 売上高 │ │ │ │ │ │ │ │ 売上高 │ │ │ │ │ │ │ │ 売上高 計 │ │ │ │ │ │ │ │ 売上原価 │ │ │ │ │ │ │ │ 売上総損益金額 │ │ │ │ │ │ │ │ 販売管理費 │ │ │ │ │ │ │ │ 役員報酬 │ │ │ │ │ │ │ │ 給料手当 │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────┘ ``` ## 다음 단계 v6에서는: - 실적입력시트 구현 - CSV 붙여넣기 영역 설정 --- **작성일**: 2025-12-05 **상태**: 완료 **다음**: v6 - 실적입력시트 구현