본문 바로가기
구글드라이브(Google Drive)와 MS오피스/엑셀, 구글시트 사용 팁

구글시트 Apps Script 함수 Custom Menu에 넣어 실행하는 방법

by 만물 상인 2024. 12. 14.
반응형

오늘은 구글드라이브의 구글시트에서,

Apps Script 함수를 Custom Menu에서 바로 사용할 수 있도록 추가하는 방법에 대해서 정리해 보겠습니다.

 

1. Apps Script 실행

Javascript를 기반으로 하는,

Apps Script를 이용하면 여러가지 커스텀한 기능을,

직접 코딩해서 사용할 수 있습니다.

 

오늘은 만약 빈 공간이 있을경우,

'NULL'을 입력하는 Script를 작성해 보겠습니다.

(아래 글에 들어가는 코드는 수정할 필요가 없이,

그대로 사용하면 되므로,

코딩 실력이 없더라도 걱정할 필요 없습니다)

 

먼저 구글 시트의 상단 메뉴에서

'확장 프로그램 > Apps Script'메뉴를 선택해 줍니다.

 

 

 

실행하면 다음과 같은 화면이 나옵니다.

아래에서 Code.js를 선택해 줍니다.

 

 

Code.gs안에,

다음과 같이 함수를 작성해 줍니다.

이 함수는 선택되어진 셀의 값들을 읽어서,

값이 없을 경우, "NULL"을 입력하는 함수 입니다.

 

function fillEmptyWithNULL() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getActiveRange();
  const values = range.getValues();

  for (let i = 0; i < values.length; i++) {
    for (let j = 0; j < values[i].length; j++) {
      if (values[i][j] === "" || values[i][j] === null) {
        values[i][j] = "NULL";
      }
    }
  }
  range.setValues(values);
}

 

 

코딩에 관심이 없으신 분들은 바로 아래로 내려가셔도 되구요.

위에서 사용한 각각의 함수들의 의미가 궁금하신 분들은,

아래의 의미를 가지고 있으니, 추후 응용하실 때 사용하시면 됩니다.

  • getActiveSpreadsheet(): 현재 활성화된 전체 문서를 가져온다
  • getActiveSheet(): 활성화 된 시트를 가져옴
  • getActiveRange(): 현재 선택된 셀의 범위를 가져옵니다.
  • getValues(): 지정된 모든 셀 값을 2차원 배열로 리턴해 줍니다.
    • 이 함수는 보통 getRange()함수와 함께 사용되 특정한 범위의 데이터를 가져와줍니다.
    • 열을 기준으로 데이터를 가져올 경우: 각 열의 값들이 개별 배열에 저장
    • 행을 기준으로 데이터를 가져올 경우: 모든 값이 이중 배열의 첫 번째 요소에 저장

 

바로 아래에, 한가지 더 함수를 추가해 줄 건데요.

아래 함수를 더 추가해서,

직접 Custom Menu를 추가해 줍니다.

 

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu("Custom Menu")
    .addItem("Fill Empty with NULL", "fillEmptyWithNULL")
    .addToUi();
}

 

 

최종적으로는 아래와 같은 모습이 됩니다.

 

 

 

이제 상단의 저장아이콘을 클릭해 줍니다.

 

 

 

이 함수를 적용할 구글 시트로 돌아와서,

브라우저를 리프레쉬 해 줍니다.

잠시 후에 아래와 같이 Custom Menu가 생성된 것을 볼 수 있습니다.

 

 

 

빈 칸에 "NULL"값을 입력하기 위해서,

원하는 범위에 셀을 선택하고,

Custom Menu에서 위 함수를 실행시켜 줍니다.

 

 

아래와 같이 NULL이 들어간 것을 확인할 수 있습니다.

 

 

 

728x90