본문 바로가기
구글 앱 스크립트

구글 앱 스크립트: 버튼을 이용한 랜덤 숫자 나열하기 [4]

by parkjp 2023. 11. 28.

 

서론

 

지난 글에 이어서 이번 포스팅에서는 버튼을 이용하여 랜덤 숫자를 나열하는 법을 해보겠습니다.

 

지난 포스팅을 보실 분은 아래 링크를 눌러주세요.

반응형

https://developer-jp.tistory.com/168

 

구글 앱 스크립트 사용법: 체크박스를 넣어보자! [3]

서론 지난 글에 이어서 이번 포스팅에서는 체크박스를 앱 스크립트로 넣는 법을 알아보겠습니다. 지난 포스팅을 안 보신분은 아래 링크를 통해 보실 수 있습니다. https://developer-jp.tistory.com/167 구

developer-jp.tistory.com

 

 

버튼을 이용한 랜덤 숫자 나열하기

 

지난 포스팅에서 체크박스를 사용해 보았습니다.

이번 포스팅에서는 체크박스 대신에 버튼을 이용해서 응용해보도록 하겠습니다.

 

이번에는 버튼을 클릭하면 주어진 범위 내에 랜덤 숫자를 뿌려주는 법을 해보겠습니다.

 

버튼을 이용한 랜덤 숫자 나열하기1

 

우선적으로 위와 같이 B5:E9셀 범위에 1부터 20까지의 숫자를 왼쪽 범위에 입력을 해두었습니다.

여기서 제가 위에 랜덤이라는 버튼을 누르면 왼쪽에 있는 숫자들을 랜덤으로 오른쪽 범위(G5:J9)에 뿌려주도록 하겠습니다.

 

우선 앱 스크립트로 와서 아래 함수를 입력해 줍시다.

 

function onClickRandomButton() {
  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = activeSpreadSheet.getActiveSheet();

  // B5:E9 범위
  const left = activeSheet.getRange(5, 2, 5, 4);
  // G5:J9 범위
  const right = activeSheet.getRange(5, 7, 5, 4);

  const leftValues = left.getValues().flat();
  leftValues.sort(() => Math.random() - 0.5);
  
  const rightValues = [];
  let arr = [];
  leftValues.forEach((v, i) => {
    if (i > 0 && i % 4 === 0) {
      rightValues.push(arr);
      arr = [];
    }

    arr.push(v);

    if (i === leftValues.length - 1) rightValues.push(arr);
  });

  right.setValues(rightValues);
  
  const countRange = activeSheet.getRange(2, 7);
  countRange.setValue(countRange.getValue() + 1);
}

 

left와 right 변수를 선언해 주었습니다.

left는 왼쪽 범위, right는 오른쪽 범위를 뜻합니다.

 

leftValues는 왼쪽 범위에 있는 값들을 2차원 배열로 나타낸 값입니다.

[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0], [13.0, 14.0, 15.0, 16.0], [17.0, 18.0, 19.0, 20.0]]

 

  const leftValues = left.getValues().flat();
  leftValues.sort(() => Math.random() - 0.5);

 

위와 같이 leftValues가 나오고 flat() 함수는 이 배열들을 1차원 배열로 만드는 기능입니다.

2차원 배열을 1차원 배열로 만든 후 sort() 함수를 이용하여 배열의 위치를 랜덤하게 섞어 주었습니다.

 

rightValues는 랜덤하게 섞은 leftValues를 다시 2차원 배열로 만든 값입니다.

따라서 right.setValues(rightValues)를 하면 랜덤하게 섞인 숫자들이 오른쪽에 나열하게 됩니다.

 

  const countRange = activeSheet.getRange(2, 7);
  countRange.setValue(countRange.getValue() + 1);

 

 

그리고 위 countRange는 버튼을 클릭한 수를 표현해 보았습니다.

G2셀에 버튼을 클릭할 때마다 숫자가 증가하도록하는 기능입니다.

 

이제 버튼에 해당 기능을 부여하는 작업을 해야하는데요.

 

버튼에 스크립트 할당하기

 

스크립트 할당 버튼을 눌러주시고 위에서 만든 함수 이름을 넣어줍시다.

 

버튼에 함수 이름 적기

 

확인을 누르시면 이제 버튼을 클릭하시면 저절로 랜덤하게 숫자가 나열되는걸 보실 수 있습니다.

 

버튼을 이용한 랜덤 숫자 나열 결과

 

 

마무리

 

여기까지 버튼을 이용한 랜덤숫자 나열하는 법을 해보았습니다.

 

혹시나 구글 앱 스크립트에 대해 궁금하신 점이나 알고 싶으신 기능이 있으신 분은 직접 댓글로 질문해 주시면 해당 질문을 토대로 포스팅을 써보겠습니다.

 

https://developer-jp.tistory.com/173

 

구글 앱 스크립트: 스프레드시트에서 이메일 보내기 [5]

서론 지난 글에 이어서 이번 포스팅에서는 스프레드시트에서 이메일을 보내는 법을 해보겠습니다. 지난 포스팅을 보실 분은 아래 링크를 눌러주세요. https://developer-jp.tistory.com/171 구글 앱 스크

developer-jp.tistory.com

 

반응형