[AppsScirpt] 5. 구글 시트 데이터 수정 및 범위 다루기
본문 바로가기
프로그래밍 언어/앱스크립트(AppsScript)

[AppsScirpt] 5. 구글 시트 데이터 수정 및 범위 다루기

by 코딩 Play 2024. 2. 12.

1. 데이터 쓰기

구글 시트에 데이터를 쓰거나 기존 데이터를 수정하는 것은 앱스 스크립트를 사용하는 데 있어서 핵심 기능 중 하나입니다. 이 기능을 통해 사용자는 스프레드시트에 자동으로 데이터를 추가하거나, 기존 데이터를 업데이트할 수 있습니다. 데이터를 쓰고 수정하는 과정은 여러 단계와 메서드를 포함할 수 있으며, 각각의 사용 사례에 맞게 조정될 수 있습니다.

단일 셀에 데이터 쓰기

가장 기본적인 방법으로, setValue(value) 메서드를 사용하여 단일 셀에 데이터를 씁니다. 이 방법은 간단한 값이나 문자열을 셀에 입력할 때 유용합니다.

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange('A1').setValue('Hello, World!');

다중 셀에 데이터 쓰기

setValues(values) 메서드를 사용하면 2차원 배열을 이용하여 여러 셀에 데이터를 동시에 쓸 수 있습니다. 이 방법은 테이블 형태의 데이터를 셀 범위에 입력할 때 적합합니다.

var data = [
  ['Name', 'Age', 'City'],
  ['John Doe', 30, 'New York'],
  ['Jane Smith', 28, 'San Francisco']
];
sheet.getRange('A1:C3').setValues(data);

2. 데이터 수정

셀 범위 수정

기존에 쓰여진 데이터를 수정할 때도 setValues(values) 메서드를 사용할 수 있습니다. 수정하고자 하는 셀 범위를 정확히 지정하고, 새로운 데이터를 2차원 배열 형태로 제공합니다.

var updatedData = [
  ['John Doe', 31, 'Boston'],
  ['Jane Smith', 29, 'Los Angeles']
];
sheet.getRange('A2:C3').setValues(updatedData);

행 또는 열 추가

새로운 행이나 열을 추가하고 그곳에 데이터를 쓰고자 할 때는 appendRow(rowContents) 메서드를 사용하여 시트의 끝에 새로운 행을 추가하거나, insertRowBefore(beforePosition) 또는 insertColumnBefore(beforePosition) 메서드를 사용하여 특정 위치에 새로운 행이나 열을 삽입할 수 있습니다.

// 새로운 행 추가 및 데이터 쓰기
sheet.appendRow(['Emily Stone', 24, 'Chicago']);

// 특정 위치에 새로운 행 삽입 후 데이터 쓰기
sheet.insertRowBefore(2); // 2번째 행 앞에 새로운 행 삽입
sheet.getRange('A2').setValue('New Person');

3. 고급 데이터 조작

데이터 검색 및 업데이트

특정 조건을 만족하는 셀을 찾아 데이터를 업데이트하려면, 먼저 getValues()로 전체 셀 범위의 데이터를 읽은 후, 조건에 맞는 셀을 찾아 해당 위치에 새로운 값을 쓰는 로직을 구현합니다.

var range = sheet.getRange('A1:C3');
var values = range.getValues();

for (var i = 0; i < values.length; i++) {
  for (var j = 0; j < values[i].length; j++) {
    if (values[i][j] === 'John Doe') {
      // 조건에 맞는 셀을 찾아 새로운 값으로 업데이트
      sheet.getRange(i + 1, j + 1).setValue('Jonathan Doe');
    }
  }
}

구글 시트에 데이터를 쓰고 수정하는 이러한 방법들은 스프레드시트를 동적으로 관리하고, 데이터를 자동으로 업데이트하는 애플리케이션을 만드는 데 있어 필수적입니다. 앱스 스크립트를 통해 이러한 작업을 자동화함으로써, 효율적이고 신속하게 정보를 관리하고 분석할 수 있습니다.

4. 범위 선택하기

앱스 스크립트를 사용하여 구글 시트의 범위와 값을 다루는 것은 데이터 조작과 자동화 작업에서 중요한 부분입니다. 범위(Range)는 스프레드시트 내의 셀들의 집합으로, 단일 셀, 여러 셀, 행, 열 또는 임의의 셀 집합을 포함할 수 있습니다. 값(Value)은 셀이나 셀들에 저장된 데이터를 의미합니다. 이 섹션에서는 앱스 스크립트를 사용하여 구글 시트의 범위와 값을 다루는 방법에 대해 자세히 설명하겠습니다.

단일 셀 선택

getRange() 메서드를 사용하여 스프레드시트의 특정 셀을 선택할 수 있습니다. 셀의 위치는 A1 표기법(예: "A1", "B2") 또는 R1C1 표기법(예: getRange(1, 1)는 "A1" 셀)으로 지정할 수 있습니다.

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell = sheet.getRange('A1'); // A1 표기법
var cell = sheet.getRange(1, 1); // R1C1 표기법

여러 셀 선택

여러 셀의 범위를 선택할 때도 getRange() 메서드를 사용하며, 선택하고자 하는 범위의 시작 셀과 끝 셀을 지정합니다.

var range = sheet.getRange('A1:B2'); // A1부터 B2까지의 범위 선택
var range = sheet.getRange(1, 1, 2, 2); // 위와 동일한 범위를 R1C1 표기법으로 선택

행 또는 열 전체 선택

전체 행이나 열을 선택하려면, getRange() 메서드에 A1 표기법으로 행 또는 열 전체를 나타내는 표현을 사용하거나, getRange(row, column, numRows) 또는 getRange(row, column, numRows, numColumns)의 형태로 사용합니다.

var entireRow = sheet.getRange('1:1'); // 1행 전체 선택
var entireColumn = sheet.getRange('A:A'); // A열 전체 선택

5. 값 다루기

값을 읽기

getValue() 또는 getValues() 메서드를 사용하여 선택한 범위의 데이터를 읽습니다. getValue()는 단일 셀의 데이터를, getValues()는 여러 셀의 데이터를 2차원 배열로 반환합니다.

var value = cell.getValue(); // 단일 셀의 값 읽기
var values = range.getValues(); // 여러 셀의 값 읽기

값을 쓰기

setValue(value) 또는 setValues(values) 메서드를 사용하여 셀에 데이터를 씁니다. setValue()는 단일 셀에 값을 쓰고, setValues()는 여러 셀에 2차원 배열 형태의 데이터를 씁니다.

cell.setValue('Hello, World!'); // 단일 셀에 값 쓰기
range.setValues([['Name', 'Age'], ['John Doe', 30]]); // 여러 셀에 값 쓰기

고급 범위 조작

앱스 스크립트는 범위 내의 셀에 대해 서식을 설정하거나 조건부 서식을 적용하는 등 다양한 조작을 지원합니다. 예를 들어, setBackground(color), setNumberFormat(format), setFontWeight(weight) 등의 메서드를 사용하여 셀의 서식을 설정할 수 있습니다.

range.setBackground('#FFFF00'); // 범위의 배경색을 노란색으로 설정
range.setNumberFormat('0.00'); // 숫자 서식 설정

구글 시트의 범위와 값을 다루는 이러한 방법들은 데이터 분석, 보고서 작성, 데이터 기반의 동적 문서 생성 등 다양한 작업을 자동화하는 데 필수적입니다. 앱스 스크립트를 통해 구글 시트의 데이터를 효과적으로 조작하고 관리하는 방법을 익히는 것은 데이터 처리 및 자동화 작업의 효율성을 크게 향상시킬 수 있습니다.

이 설명이 범위와 값 다루기에 대한 깊은 이해를 제공했기를 바랍니다. 추가적인 질문이나 더 알고 싶은 내용이 있으면 언제든지 질문해주세요.

최근댓글

최근글

skin by © 2024 ttuttak