커뮤니티
포인트
로딩중
쿠폰
내 강의실
국비 신청 내역
수강권
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
3-8 매출데이터로 대쉬보드 생성 과정에서 계속적으로 오류가 납니다.
ChatGPT 300% 활용하기
챕터 3
북마크
이*석
댓글
2
추천
0
조회수
67
조회수
67
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


매출데이터로 대쉬보드 생성시 화면에 표시되는 내용과 상이 합니다.

chatgpt에서 생성된 코드가 시트1의 1행의 내용과 일치하지 않아 발생하는 오류 인것 같습니다.



스파르타 즉문즉답

고 계신 화면 전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.




작성한 코드 및 에러 메세지

function 매출_대시보드_생성() {

 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 현재 스프레드시트 가져오기

 const sourceSheet = ss.getSheetByName("시트1"); // 원본 시트 (시트1)

 const dashboardName = "대시보드"; // 대시보드 시트 이름


 // 기존 '대시보드' 시트가 있다면 삭제 후 새로 생성

 let dashboard = ss.getSheetByName(dashboardName);

 if (dashboard) ss.deleteSheet(dashboard);

 dashboard = ss.insertSheet(dashboardName);


 // A2:H 범위 데이터 가져오기 (1행은 헤더라 제외)

 const data = sourceSheet.getRange("A2:H" + sourceSheet.getLastRow()).getValues();


 // 열 번호 정의 (0부터 시작)

 const 제품열 = 2;   // C열: 제품명

 const 도시열 = 4;   // E열: 도시

 const 고객분류열 = 5; // F열: 고객분류

 const 카테고리열 = 6; // G열: 카테고리

 const 매출열 = 7;   // H열: 매출


 // 결과 저장할 객체들

 const 제품매출 = {};

 const 도시매출 = {};

 const 고객카테고리매출 = {};


 // 데이터 순회하며 집계

 data.forEach(row => {

  const 제품 = row[제품열];

  const 도시 = row[도시열];

  const 고객분류 = row[고객분류열];

  const 카테고리 = row[카테고리열];

  const 매출 = parseFloat(row[매출열]) || 0;


  // 제품별 매출 집계

  if (!제품매출[제품]) 제품매출[제품] = 0;

  제품매출[제품] += 매출;


  // 도시별 매출 집계

  if (!도시매출[도시]) 도시매출[도시] = 0;

  도시매출[도시] += 매출;


  // 고객분류 + 카테고리별 매출 집계

  const key = `${고객분류} > ${카테고리}`;

  if (!고객카테고리매출[key]) 고객카테고리매출[key] = 0;

  고객카테고리매출[key] += 매출;

 });


 let row = 1; // 대시보드시트에 출력할 시작 행


 // ▶ 1. 제품명별 매출

 dashboard.getRange(row++, 1).setValue("▶ 제품명별 매출");

 dashboard.getRange(row++, 1, 1, 2).setValues([["제품명", "매출"]]);

 for (let [제품, 합계] of Object.entries(제품매출)) {

  dashboard.getRange(row++, 1, 1, 2).setValues([[제품, 합계]]);

 }


 row += 2; // 공백


 // ▶ 2. 도시별 매출

 dashboard.getRange(row++, 1).setValue("▶ 도시별 매출");

 dashboard.getRange(row++, 1, 1, 2).setValues([["도시", "매출"]]);

 for (let [도시, 합계] of Object.entries(도시매출)) {

  dashboard.getRange(row++, 1, 1, 2).setValues([[도시, 합계]]);

 }


 row += 2; // 공백


 // ▶ 3. 고객분류별 카테고리별 매출

 dashboard.getRange(row++, 1).setValue("▶ 고객분류별 카테고리별 매출");

 dashboard.getRange(row++, 1, 1, 2).setValues([["고객분류 > 카테고리", "매출"]]);

 for (let [key, 합계] of Object.entries(고객카테고리매출)) {

  dashboard.getRange(row++, 1, 1, 2).setValues([[key, 합계]]);

 }


 // 보기 좋게 열 너비 자동 조정

 dashboard.autoResizeColumns(1, 2);

}류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴