시트 원격 행 제거 [A시트에서 B시트 데이터 제거하기]

  • Post category:스프레드시트
  • Reading time:5 mins read

다양한 구글 스프레드시트를 원격으로 관리하는 것에는 여러 가지 이점이 있습니다. 아무래도 각 담당자별로 같은 내용을 쉽게 공유받을 수 있고, 입력받은 내용을 개별 담당자 시트 별로 나눠주는 것도 가능하죠. 스프레드시트의 이점은 이게 끝이 아닙니다.

높은 접근성: 구글 스프레드시트를 사용하면 인터넷 연결만 있으면 어디서든 데이터에 액세스할 수 있습니다. 이렇게 하면 집, 회사 또는 이동 중에 스프레드시트를 관리할 수 있습니다.

실시간 공동 작업: 구글 스프레드시트는 다중 사용자가 동시에 동일한 스프레드시트에서 작업할 수 있는 실시간 공동 작업 기능을 제공합니다. 이 기능은 프로젝트에서 함께 일해야 하는 팀에게 특히 유용합니다.

쉬운 공유: 구글 스프레드시트를 공유하는 것은 간단하고 안전합니다. 누가 스프레드시트에 액세스할 수 있는지와 액세스 수준을 선택할 수 있습니다. 이렇게 하면 클라이언트, 동료 또는 기타 이해 관계자와 데이터를 쉽게 공유할 수 있습니다.

자동 백업: 구글 스프레드시트는 작업하는 동안 데이터를 자동으로 저장하므로 컴퓨터가 충돌하거나 전원이 나가더라도 작업물을 잃을 걱정을 할 필요가 없습니다. 이는 필요한 경우 스프레드시트의 이전 버전을 쉽게 복원할 수 있다는 것을 의미합니다.

다른 구글 도구와 통합: 구글 스프레드시트는 구글 드라이브, 구글 도큐먼트, 구글 폼 등 다른 구글 도구와 매끄럽게 통합됩니다. 이로 인해 스프레드시트로 데이터를 가져오거나 다른 애플리케이션으로 데이터를 내보내기 쉬워집니다.

전반적으로, 다양한 구글 스프레드시트를 원격으로 관리하는 것은 데이터를 효율적이고 안전하게 관리하고 공유해야 하는 개인과 팀에게 매력적인 옵션을 제공합니다.

관리자 시트에서 각 담당자의 개별시트를 제어할 수 있을까?

가능합니다. 관리자가 보고있는 데이터를 삭제해야 하는 경우, 담당자 시트로 Apps Script를 활용하면 쉽게 제어할 수 있죠. 자주 활용할 수 있는 방법은 바로 행 번호를 기준으로 잡는 것 입니다만, 저는 A열에 별도의 ‘고유 번호’ 등을 지정하시길 추천해드립니다.

특히 서로 다른 시트간에 실시간의 제어를 위해서는 각각의 입력과 출력에 대해서 제대로 파악하고 있어야 합니다. 그런 기능을 구글 시트에서는 ‘UI’라는 별도 함수를 통해 화면을 띄워줄 수 있습니다. 부가적인 확인을 통해 실수를 줄일 수 있겠죠?

시트 제어 샘플 코드 :

커스텀 메뉴생성을 통해 삭제하는 방법:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('데이터 삭제 요청').addItem('행 삭제', 'deleteRow').addToUi();
}

위 코드블럭을 추가해줍시다.

deleteRow 함수를 직접 실행해줍니다.

.getSheetByName 이 익숙해지고 나면 특정 시트의 링크를 가지고서 서로 다른 시트를 제어할 수 있습니다. 코드 예시 :

     var sheetUrl = 스프레드시트 링크 URL); // assuming the sheet link is in column E (index 4)
      if (sheetUrl) {
        var sheetId = sheetUrl.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/)[1];
        var ss = SpreadsheetApp.openById(sheetId);
        var targetSheet = ss.getActiveSheet(); // assuming you want to delete the active sheet in the target spreadsheet
        var data2=ss.getDataRange().getValues();
        //제거 목표 
        var targetDelete = rowData[0]
        var rowIndexToDelete = -1;
        console.log(targetDelete)
        for (var i = 0; i < data2.length; i++) {
        if (data2[i][0] == targetDelete) { // assuming the search term is in column A
          rowIndexToDelete = i + 1; // add 1 to get the actual row index (since row indices start at 1)
          break;
        }
    }
        targetSheet.deleteRow(rowIndexToDelete);
        ui.alert(rowData[4]+"연결 시트 데이터 제거 완료.");}
    } else {
      ui.alert("현재 인지 범위를 벗어나는 행입니다. 선택 가능한 행번호 1~ " + data.length + ".");}

이렇게 하면 원본 시트에서는 행을 기준으로 삭제한 뒤 A열 데이터를 기반으로 다른 시트에 있는 행을 찾아서 삭제가 가능합니다 :)

저 같은 경우는 5번째 열인 E열에 해당하는 데이터 값을 넣고 썼기 때문에 rowData[4]라는 값을 활용했습니다

실제 우측버튼을 누르고 행삭제하는 것과 똑같은 기능이지만, 다른 연결 시트의 행도 똑같이 찾아 지워주기 때문에 업무 지시나 변경점이 있을 때 이를 공통적으로 관리해야 하는 경우 요긴하게 쓰이는 함수식입니다.

답글 남기기