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

스프레드시트 구글 앱스 스크립트 TextFinder 함수를 사용해보자 [18]

by parkjp 2024. 1. 3.

서론

 

안녕하세요, 지난 글에서는 스프레드시트에서 앱스 스크립트의 트리거 기능을 이용하여 자동화 작업을 하는 법을 해보았습니다. 이번 글에서는 스프레드시트에서 앱스 스크립트의 함수 중 하나인 TextFinder 함수의 기능을 설명드리도록 하겠습니다.

 

혹시나 지난 포스팅을 못 보신분들은 아래 링크를 클릭해 주세요.

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

 

스프레드시트에서 구글 앱스 스크립트 트리거를 이용하여 자동화 작업하기(Google Apps Script) [17]

서론 안녕하세요, 지난 글에서는 체크박스에 체크한 이미지들의 링크를 다운로드 하는 법을 해보았습니다. 이번 글에서는 스프레드시트에서 앱스 스크립트의 트리거 기능을 이용하여 자동화

developer-jp.tistory.com

반응형

TextFinder 함수와 사용법

스프레드시트의 구글 앱스 스크립트에는 TextFinder()라는 함수가 있습니다.

어떤 기능을 하는지 간단하게 설명드리면 범위, 시트 또는 스프레드시트 내에서 텍스트를 찾거나 바꾸는 기능을 하는 함수입니다.

 

위 기능은 범위 내에서 내가 특정한 텍스트를 찾고 싶을 때나 특정한 텍스트를 다른 텍스트로 바꾸기를 원할 때 사용할 수 있습니다.

그럼 이제 어떻게 사용하는지 한번 예제로 알아보도록 하겠습니다.

 

예시1

일단 저는 위처럼 예시로 B9:B13범위에 값들을 채워 넣었습니다.

이제 '텍스트1'이라는 값을 TextFinder 함수로 찾아보겠습니다.

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

  // 시트 전체에서 텍스트를 찾을 때
  const textFinder1 = activeSheet.createTextFinder('텍스트1');
  const firstCell = textFinder1.findNext();
  const secondCell = textFinder1.findNext();

  // 시트 내 특정 범위에서 텍스트를 찾을 때
  const textFinder2 = activeSheet.getRange('B9:B13').createTextFinder('텍스트1');
  const cells = textFinder2.findAll();
  for (const cell of cells) {
  	// 폰트 빨간색으로 변경.
    cell.setFontColor('red');
  }
}

 

예제를 통해 설명드리겠습니다.

 

- activeSheet.CreateTextFinder

위 처럼 함수를 쓴다면 시트 전체에서 텍스트를 찾습니다.

 

- activeSheet.getRange('원하는 범위').createTextFinder

보다 특정 범위 내에서 텍스트를 찾기 원하시면 범위까지 지정 후 함수를 쓰시면 됩니다.

 

TextFinder의 findNext()함수는 해당 범위에서 찾은 텍스트 중에서 첫번째 셀을 반환합니다.

findNext()함수를 호출 할때마다 다음에 찾은 셀을 반환합니다.

위 예제에서 firstCell은 B9을, secondCell은 B11을 반환합니다.

 

findAll()함수는 찾은 모든 셀들을 array형태로 반환합니다.

cells의 값은 [B9셀, B11셀, B13셀]로 나옵니다.

저는 찾은 셀들의 폰트 색을 빨간색으로 바꾸어 보았습니다.

 

찾은 셀들의 폰트 색깔이 바뀌었다.

이제는 폰트색이 아닌 직접 값을 바꾸어 보도록 하겠습니다.

바꾸는 법은 replaceWith 또는 replaceAllWith함수를 쓰시면 됩니다.

아래를 한번 봐주세요.

  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = activeSpreadSheet.getActiveSheet();

  const textFinder2 = activeSheet.getRange('B9:B13').createTextFinder('텍스트1');
  textFinder2.findNext();
  textFinder2.replaceWith('새해 복 많이 받으세요.');

 

우선 맨 처음 찾은 셀의 값을 '새해 복 많이 받으세요'라는 문구로 바꾸는 스크립트입니다.

아래와 같이 결과가 나옵니다.

replaceWith 결과

두번 째도 바꾸길 원하시면 findNext()를 한번더 호출하고 replaceWith함수를 쓰시면 됩니다.

 

이번에는 한번에 다 바꾸는 법을 해보겠습니다.

replaceAllWith함수를 쓰시면 됩니다.

  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = activeSpreadSheet.getActiveSheet();

  const textFinder2 = activeSheet.getRange('B9:B13').createTextFinder('텍스트1');
  textFinder2.replaceAllWith('새해 복 많이 받으세요.');

 

위 스크립트를 쓰신다면 찾은 모든 셀들을 한번에 바꾸어 줍니다.

replaceAllWith 결과

 

마무리

여기까지 간단하게 스프레드시트에서 앱스 스크립트의 함수 중 하나인 TextFinder 함수의 기능을 설명드리고 사용법을 알아보았습니다.

 

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

다음 포스팅 바로가기:

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

 

스프레드시트 구글 앱스 스크립트 날짜 포맷 변경하기 [19]

서론 안녕하세요, 지난 글에서는 스프레드시트에서 앱스 스크립트의 함수 중 하나인 TextFinder 함수의 기능을 알아보았습니다. 이번 글에서는 스프레드시트에서 앱스 스크립트로 날짜 포맷을 변

developer-jp.tistory.com

 

반응형