본문 바로가기
업무꿀팁/앱스 스크립트

앱스 스크립트(Apps Script) 시트 만들기, 시트 복사하기 (insertSheet 사용법, 시트 생성, 시트 복사 업무 자동화)

by 민트녹차 2021. 12. 1.

안녕하세요. 이번 시간에는 구글 앱스 스크립트(Google Apps Script)에서 insertSheet 함수를 사용하여 시트를 생성하고, 시트를 복사하는 방법에 대해 알아보겠습니다.

앱스-스크립트-시트-만들기-시트-복사하기-제목-이미지
앱스 스크립트 시트 만들기, 시트 복사하기

 

들어가기 전에...

만약, 구글 앱스 스크립트(Google Apps Script)를 처음 접하시는 분은 아래 링크에서 앱스 스크립트에 대한 기본 개념과 실행방법에 대한 설명을 먼저 보고 오시는 것을 추천드립니다. 실행방법을 모르는 상태에서 아래 내용을 보시면 이해되지 않는 부분이 있을 수 있습니다. 그럼, 이제 앱스 스크립트의 insertSheet 함수를 이용하여 시트 생성 및 복사하는 방법에 대해 알아보겠습니다.

구글 앱스 스크립트(Google Apps Script) 실행하기 (개념, 실행방법, 업무 자동화)

 

구글 앱스 스크립트(Google Apps Script) 실행하기 (개념, 실행방법, 업무 자동화)

안녕하세요. 오늘은 업무 자동화를 위해 알아두면 아주 편리한 구글 앱스 스크립트(Google Apps Script)에 대해서 알아보도록 하겠습니다. 구글 앱스 스크립트란 무엇인지, 그리고 어떻게 실행하고

melonmilk.tistory.com

 

InsertSheet 함수 사용법

InsertSheet 함수는 인자 값을 전달하는 형태에 따라 다양한 방식으로 사용됩니다. 보통 새 시트를 생성하는 용도로만 사용되는 걸로 많이들 아시지만, options 인자 값을 이용하면 다른 시트를 복사할 수도 있습니다. 그럼, 자세한 사용법에 대해서 알아보도록 하곘습니다.

InsertSheet()

마지막 시트 뒤로 새 시트를 생성합니다.

InsertSheet(sheetIndex)

sheetIndex 번호로 지정한 위치에 새 시트를 생성합니다. 맨 처음 위치에 시트를 생성하고자 할 때는 sheetIndex를 '0'으로 지정하면 됩니다.

InsertSheet(sheetIndex, options)

sheetIndex 번호로 지정한 위치에 options로 지정한 시트를 복사하여 새 시트를 생성합니다. 맨 처음 위치에 시트를 생성하고자 할 때는 sheetIndex를 '0'으로 지정하면 됩니다. options는 아래의 template 파라미터가 사용되며, template 파라미터는 스프레드시트에 존재하는 시트로 지정해야 합니다. 자세한 사용법과 관련된 내용은 아래의 응용 부분을 참고하시면 좀 더 이해하시기 쉽습니다.

이름 유형 설명
template Sheet 템플릿 시트의 모든 데이터가 새 시트에 복사됩니다. 템플릿 시트로 지정할 시트는 스프레드시트에 존재하는 시트로 지정해야 합니다.

 

 

InsertSheet(options)

마지막 시트 뒤로 options로 지정한 시트를 복사하여 새 시트를 생성합니다.

InsertSheet(sheetName)

마지막 시트 뒤로 특정 이름의 새 시트를 생성합니다.

InsertSheet(sheetName, sheetIndex)

sheetIndex 번호로 지정한 위치에 특정 이름의 새 시트를 생성합니다. 맨 처음 위치에 시트를 생성하고자 할 때는 sheetIndex를 '0'으로 지정하면 됩니다.

InsertSheet(sheetName, sheetIndex, options)

sheetIndex 번호로 지정한 위치에 options로 지정한 시트를 복사하여 특정 이름의 새 시트를 생성합니다. 맨 처음 위치에 시트를 생성하고자 할 때는 sheetIndex를 '0'으로 지정하면 됩니다.

InsertSheet(sheetName, options)

마지막 시트 뒤로 options로 지정한 시트를 복사하여 특정 이름의 새 시트를 생성합니다.

 

 

InsertSheet 함수 응용

InsertSheet 함수로 특정 이름의 시트 생성하기

새 스프레드시트를 생성하고 [확장 프로그램] > [Apps Script] 메뉴를 선택합니다. 앱스 스크립트 프로젝트 페이지에 접근하게 되면 아래와 같이 createSheet 함수를 생성합니다. 코드를 보시면 아시겠지만, 현재 스프레드시트를 'ss' 변수에 할당하고, insertSheet 함수를 이용하여 스프레드시트에 "MelonMilk"라는 이름의 새 시트를 생성합니다.

function createSheet() {
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.insertSheet("MelonMilk");

    console.log("[+] 성공!");
  } catch(e){
    console.log("[+] 실패! ("+e+")");
  }
}

함수 작성이 완료되면 코드를 저장하고 실행합니다. 위 코드를 보시면 'SpreadsheetApp' 클래스가 선언되어 있기 때문에 이 기능과 관련된 계정 엑세스 허용 여부를 물어봅니다. 계정 엑세스를 허용하면 아래 그림과 같이 정상적으로 함수가 실행되고 로그를 확인할 수 있습니다.

앱스-스크립트-실행-및 실행-로그가-출력되는-이미지
앱스 스크립트 함수 실행 및 실행 로그 확인

스프레드시트를 확인해보면 마지막 시트 뒤로 "MelonMilk"라는 이름의 새 시트가 생성되어 있습니다.

스프레드시트-맨-뒤에-MelonMilk-시트가-생성된-이미지
스프레드시트 맨 뒤에 "MelonMilk" 시트 생성

 

 

InsertSheet 함수로 특정 이름으로 시트 복사하기

위에서도 말씀드린 것처럼 InsertSheet 함수를 이용하여 시트 복사가 가능합니다. options 인자 값을 사용하면 되는데요. 아래는 "시트1" 시트를 템플릿 시트로 지정하고 해당 시트를 복사하여 스프레드시트 맨 앞에 새 시트를 생성하는 코드입니다. 코드를 보시면 sheetIndex 번호가 '0'으로 지정되어 있고 "시트1"을 템플릿 시트로 지정하여 options 인자 값으로 전달하는 것을 확인할 수 있습니다.

function createSheet() {
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var templateSheet = ss.getSheetByName("시트1");

    ss.insertSheet("MelonMilk", 0, {template: templateSheet});

    console.log("[+] 성공!");
  } catch(e){
    console.log("[+] 실패! ("+e+")");
  }
}

"시트1" 시트는 아래 그림과 같이 시트에 내용이 일부 기입되어 있는 상태입니다. 위 앱스 스크립트를 실행하게 되면 sheetIndex가 '0'이기 때문에 스프레드시트 맨 앞에 "MelonMilk" 이름으로 "시트1" 시트가 복사되어 생성됩니다. 시트를 생성할 위치는 아래 그림을 참고하시면 좀 더 이해하기 쉽습니다. 맨 앞의 경우엔 sheetIndex를 '0'으로 지정하면 되고, "시트2"와 "시트3" 사이에 새 시트를 생성하고자 한다면 sheetIndex를 "2"로 지정하면 됩니다.

스프레드시트-맨-앞에-시트1-내용이-복사된-MelonMilk-시트가-생성된-이미지
"시트1" 내용이 복사되어 스프레드시트 맨 앞에 "MelonMilk" 시트 생성

 

마치며...

오늘은 앱스 스크립트를 이용하여 시트를 생성하고, 시트를 복사하는 방법에 대해 공부해 보았습니다. 업무 자동화를 하기 위해서 알아야 하는 기초 내용이기 때문에 오늘 배운 내용도 다시 한번 복습해 보셨으면 좋겠습니다. 오늘도 긴 글 읽어주셔서 감사합니다.

 

댓글