서비스
home

1~4장 앱스 스크립트 기초

1장 업무 효율성 200%의 비법, 구글 앱스 스크립트

1장에는 코드가 없습니다.
1장 그림 보기

2장 첫 번째 앱스 스크립트 작성하기

2장 그림 보기

[예제 02-01] A1 셀의 값 가져와서 표시하는 함수

function getA1Value() { const value = SpreadsheetApp.getActiveSheet().getRange('A1').getValue() Logger.log(value) }
JavaScript
복사

[그림 02-20] 자바스크립트에서 사용 가능한 변수명과 불가능한 변수명 예시

function myFunction() { // 사용 가능한 변수명 예시 const variable1 //영문자로 시작 let _variable2 //언더스코어로 시작 var $variable3 //달러로 시작 // 사용 불가능한 변수명 예시 const 1variable4 // 숫자로 시작 let #variable5 //$외의 특수문자로 시작 let break // 자바스크립트 예약어로 시작 }
JavaScript
복사

[예제 02-02] 재선언이 가능한 var

function variables(){ var value = 1 Logger.log(value) var value = 2 Logger.log(value) Logger.log(value) }
JavaScript
복사

[그림 02-21] 재선언을 하면 오류 메시지를 표시하는 let(const)

function variables2(){ let value = 1 Logger.log(value) let value = 2 Logger.log(value) }
JavaScript
복사

[그림 02-22] 재할당이 가능한 let

function variables2(){ let value = 1 Logger.log(value) value = 2 Logger.log(value) }
JavaScript
복사

[그림 02-23] 재할당이 불가능한 const

function variables3(){ const value = 1 Logger.log(value) value = 2 Logger.log(value) }
JavaScript
복사

3장 구글 시트에서 값 가져오기

3장 그림 보기

[예제 03-01] getValues()로 A1:E1의 값 가져오기

function getA1E1Values() { const value = SpreadsheetApp.getActiveSheet().getRange('A1:E1').getValues() Logger.log(value) }
JavaScript
복사

배열 선언

function myArray() { const array = ['a', 'b', 'c'] Logger.log(array[0]) }
JavaScript
복사

[예제 03-02] getValues()로 A1:E4의 값 가져오기

function getA1E4Values() { const value = SpreadsheetApp.getActiveSheet().getRange('A1:E4').getValues() Logger.log(value) }
JavaScript
복사

[예제 03-03] getValues()로 A1:A4의 값 가져오기

function getA1A4Values() { const value = SpreadsheetApp.getActiveSheet().getRange('A1:A4').getValues() Logger.log(value) }
JavaScript
복사

객체 선언

let obj = { key1: 'value1', key2: 'value2', key3: 'value3' }
JavaScript
복사

객체에서 값 불러오기

function myObject() { let obj = { key1: 'value1', key2: 'value2', key3: 'value3' } Logger.log(obj.key1) Logger.log(obj['key1']) let keyName = 'key1' Logger.log(obj[keyName]) }
JavaScript
복사

객체를 포함한 배열 선언

function arrObj(){ let arr = [ {name: 'lee', age: 30}, {name: 'kim', age: 20}, {name: 'park', age: 10} ] Logger.log(arr[0]) Logger.log(arr[0].name) Logger.log(arr[0].age) }
JavaScript
복사

D3의 값 가져오기

function getD3Value() { const value = SpreadsheetApp.getActiveSheet().getRange(3, 4).getValues() Logger.log(value) }
JavaScript
복사

[예제 03-04] 행과 열을 숫자로 지정해서 D3:E4의 값 가져오기

function getD3E4Values() { const value = SpreadsheetApp.getActiveSheet().getRange(3, 4, 2, 2).getValues() Logger.log(value) }
JavaScript
복사

[그림 03-03] 탭이름!범위 방식으로 시트2의 A1:C3 범위의 데이터를 표시

function getA1C3Values_1() { const SS = SpreadsheetApp.getActiveSpreadsheet() const value = SS.getRange('시트2!A1:C3').getValues() Logger.log(value) }
JavaScript
복사

[그림 03-04] getSheetByName() 방식으로 시트2의 A1:C3 범위의 데이터를 표시

function getA1C3Values_2() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const value = T_SHEET2.getRange('A1:C3').getValues() Logger.log(value) }
JavaScript
복사

[예제 03-05] 시트명을 배열로 만들고 탭을 지정해 값 가져오기

function getA1C3Values_3() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheetNames = ['시트1', '시트2'] const T_SHEET2 = SS.getSheetByName(sheetNames[1]) const value = T_SHEET2.getRange('A1:C3').getValues() Logger.log(value) }
JavaScript
복사

[예제 03-06] 두 시트의 값을 연달아 표시하기

function getA1C3Values_4() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheetNames = ['시트1', '시트2'] const T_SHEET1 = SS.getSheetByName(sheetNames[0]) const value1 = T_SHEET1.getRange('A1:C3').getValues() const T_SHEET2 = SS.getSheetByName(sheetNames[1]) const value2 = T_SHEET2.getRange('A1:C3').getValues() Logger.log(value1) Logger.log(value2) }
JavaScript
복사

[예제 03-07] for문으로 1부터 10까지 표시하기

function forIteration() { for (let i = 1; i < 11; i++) { Logger.log(i) } }
JavaScript
복사

[예제 03-08] for문을 사용해 두 시트의 값을 연달아 표시하기

function getA1C3ValuesForIteration() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheetNames = ['시트1', '시트2'] for (let i = 0; i < sheetNames.length; i++) { const sheet = SS.getSheetByName(sheetNames[i]) const value = sheet.getRange('A1:C3').getValues() Logger.log(value) } }
JavaScript
복사

[예제 03-09] while문으로 1부터 10까지 표시하기

function whileIteration() { let i = 1 while (i < 11) { Logger.log(i) i++ } }
JavaScript
복사

[예제 03-10] while문을 사용해 두 시트의 값을 연달아 표시하기

function getA1C3ValuesWhileIteration() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheetNames = ['시트1', '시트2'] let i = 0 while (i < sheetNames.length) { const sheet = SS.getSheetByName(sheetNames[i]) const value = sheet.getRange('A1:C3').getValues() Logger.log(value) i++ } }
JavaScript
복사

[예제 03-11] while문을 사용해 특정 폴더의 하위 폴더 이름 모두 가져오기

function getSubFolders() { const parentFolder = DriveApp.getFolderById('폴더ID') // 폴더ID는 계정에 맞게 입력 const subFolders = parentFolder.getFolders() while (subFolders.hasNext()){ let subFolderName = subFolders.next().getName() Logger.log(subFolderName) } }
JavaScript
복사

[그림 3-7] getDataRange()로 시트1, 시트2의 값을 표시

function getDataRangeValues() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheetNames = ['시트1', '시트2'] for (let i = 0; i < sheetNames.length; i++) { const sheet = SS.getSheetByName(sheetNames[i]) const value = sheet.getDataRange().getValues() Logger.log(value) } }
JavaScript
복사

[그림 3-9] getMaxRows(), getMaxColumns()를 사용해 탭의 모든 행과 열의 값을 가져오기

function getWholeData() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheetNames = ['시트1', '시트2'] for (let i = 0; i < sheetNames.length; i++) { const sheet = SS.getSheetByName(sheetNames[i]) const value = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).getValues() Logger.log(value) } }
JavaScript
복사

[예제 03-12] 탭과 열을 지정해서 마지막 행 위치 찾는 함수 (1단계)

function getLastRowOfCol() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트2') const col = 'A' let lastRow = sheet.getMaxRows(); Logger.log(`${col}1:${col + lastRow}`) }
JavaScript
복사

[예제 03-13] 탭과 열을 지정해서 마지막 행 위치 찾는 함수 (2단계)

function getLastRowOfCol() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트2') const col = 'A' let lastRow = sheet.getMaxRows(); Logger.log(`${col}1:${col + lastRow}`) let colValues = sheet.getRange(`${col}1:${col + lastRow}`).getValues(); for (; colValues[lastRow - 1] == '' && lastRow > 0 ; lastRow--) { } Logger.log(lastRow) }
JavaScript
복사

[예제 03-14] 탭과 열을 매개변수로 입력하면 값이 있는 마지막 행을 찾는 함수

function getLastRowOfCol(sheet, col) { let lastRow = sheet.getMaxRows(); Logger.log(`${col}1:${col + lastRow}`) let colValues = sheet.getRange(`${col}1:${col + lastRow}`).getValues(); for (; colValues[lastRow - 1] == '' && lastRow > 0; lastRow--) { } return lastRow }
JavaScript
복사

[예제 03-15] getLastRowOfCol 함수를 활용해 시트2의 A열의 값을 배열로 표시하기

function getSheet2AColValues() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트2') const col = 'A' let lastRowOfCol = getLastRowOfCol(sheet, col) Logger.log(`${col}1:${col + lastRowOfCol}`) let value = sheet.getRange(`${col}1:${col + lastRowOfCol}`).getValues() Logger.log(value) }
JavaScript
복사

[그림 03-11] getSheet2AColValues 함수의 실행 결과

function getSheet2AColValues() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트2') const col = 'A' let lastRowOfCol = getLastRowOfCol(sheet, col) Logger.log(`${col}1:${col + lastRowOfCol}`) let value = sheet.getRange(`${col}1:${col + lastRowOfCol}`).getValues() Logger.log(value) } function getLastRowOfCol(sheet, col) { let lastRow = sheet.getMaxRows(); Logger.log(`${col}1:${col + lastRow}`) let colValues = sheet.getRange(`${col}1:${col + lastRow}`).getValues(); for (; colValues[lastRow - 1] == '' && lastRow > 0; lastRow--) { } return lastRow }
JavaScript
복사

익숙해지기 문제와 답

// 1) 다음과 같은 배열이 있을 때 arr[3]의 값은 무엇일까요? function myFunction() { let arr = [1, 2, 3, 4, 5] Logger.log(arr[3]) // 실행로그 4 }
JavaScript
복사
// 2) 다음과 같은 배열이 있을 때 arr[2]의 값은 무엇일까요? function myFunction() { let arr = [[1, 2], [3, 4], [5]] Logger.log(arr[2]) // 실행로그 [5] }
JavaScript
복사
// 3) 다음과 같은 배열이 있을 때 값 2를 로그에 표시하려면 어떻게 해야할까요? function myFunction() { let arr = [[1, 2], [3, 4], [5]] Logger.log(arr[0][1]) // 실행로그 2 }
JavaScript
복사
// 4) 다음과 같은 객체가 있을 때 값 value1을 로그에 표시하려면 어떻게 해야할까요? function myFunction() { let obj = { key1: 'value1', key2: 'value2', key3: 'value3' } Logger.log(obj.key1) // 실행로그 value1 Logger.log(obj['key1']) // 실행로그 value1 }
JavaScript
복사
// 5) 다음과 같은 배열이 있을 때 park의 age를 로그에 표시하려면 어떻게 해야할까요? function myFunction() { let arr = [ { name: 'lee', age: 30 }, { name: 'kim', age: 20 }, { name: 'park', age: 10 } ] Logger.log(arr[2].age) // 실행로그 10 }
JavaScript
복사
// 6) 1부터 10까지 더해서 sum 변수에 할당하려면 아래의 for문을 어떻게 완성해야 할까요? function myFunction() { let sum = 0 for (i = 1; i < 11; i++) { sum += i // 또는 sum = sum + i } Logger.log(sum) // 실행로그 55 }
JavaScript
복사
// 7) 구글 시트의 “데이터” 탭의 “A5:B10”까지의 값을 가져오려면 다음 코드를 어떻게 완성해야 할까요? function myFunction() { let arr = SpreadsheetApp.getActiveSpreadsheet().getRange('데이터!A5:B10').getValues() Logger.log(arr) }
JavaScript
복사
// 8) 구글 시트의 “데이터” 탭의 1행의 1열부터 10열까지의 값을 가져오려면 다음 코드를 어떻게 완성해야 할까요? function myFunction() { let arr = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('데이터').getRange(1, 1, 1, 10).getValues() Logger.log(arr) }
JavaScript
복사
// 9) 다음과 같이 col, startRow, endRow에 변수가 할당되어 있을때, 실행로그에 A1:A10을 표시하려면 어떻게 해야할까요? function myFunction() { let col = 'A' let startRow = 1 let endRow = 10 Logger.log(`${col}${startRow}:${col}${endRow}`) // 실행로그 A1:A10 Logger.log(col + startRow + ':' + col + endRow) // 실행로그 A1:A10 }
JavaScript
복사

4장 구글 시트에 값 입력하기

4장 그림 보기

[예제 04-01] setValue()로 시트1 탭의 A1 셀에 숫자 1을 입력

function insertValue() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트1') let cell = sheet.getRange('A1') cell.setValue(1) }
JavaScript
복사

[예제 04-02] for문으로 반복해서 단일 값 입력하기

function insertValues() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트1') const values = [1, '구글 시트', true, new Date(), '=LEN(B2)', '=query(\'시트2\'!A1:E4,"select *")'] const ranges = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6'] const valuesLabel = ['숫자', '문자열', '불리언', '현재 날짜', 'B2셀 문자열의 길이 함수', '시트2의 A1:E4 가져오기 쿼리함수'] const rangesLabel = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6'] for (i = 0; i < values.length; i++) { let cellLabel = sheet.getRange(rangesLabel[i]) cellLabel.setValue(valuesLabel[i]) let cell = sheet.getRange(ranges[i]) cell.setValue(values[i]) } }
JavaScript
복사

[예제 04-03] setValues()로 배열 값 입력하기

function insertValuesArrayRow() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트3') const values = [[1, '구글 시트', true, new Date(), '=LEN(B2)', '=query(\'시트2\'!A1:E4,"select *")']] const ranges = 'A1:F1' let cell = sheet.getRange(ranges) cell.setValues(values) }
JavaScript
복사

[그림 04-04] setValues()로 배열 값 입력하기

function insertValuesArrayCol() { const SS = SpreadsheetApp.getActiveSpreadsheet() const sheet = SS.getSheetByName('시트3') const values = [[1], ['구글 시트'], [true], [new Date()], ['=LEN(B2)'], ['=query(\'시트2\'!A1:E4,"select *")']] const ranges = 'A1:A6' let cell = sheet.getRange(ranges) cell.setValues(values) }
JavaScript
복사

[예제 04-04] 시트2 탭의 값을 시트4 탭에 입력하기 (입력할 값 배열과 범위의 크기가 다른 경우)

function insertValuesToSmallRange() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const T_SHEET4 = SS.getSheetByName('시트4') const values = T_SHEET2.getDataRange().getValues() const ranges = 'A1:E1' let cell = T_SHEET4.getRange(ranges) cell.setValues(values) }
JavaScript
복사

length를 사용해 범위 자동계산해서 입력하기

function insertValuesToDynamicRange() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const T_SHEET4 = SS.getSheetByName('시트4') const values = T_SHEET2.getDataRange().getValues() let cell = T_SHEET4.getRange(1, 1, values.length, values[0].length) cell.setValues(values) }
JavaScript
복사

[예제 04-05] copyTo로 시트2 탭의 값을 시트5 탭으로 복사하기

function copyData() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const T_SHEET5 = SS.getSheetByName('시트5') T_SHEET2.getDataRange().copyTo(T_SHEET5.getRange(1, 1)) }
JavaScript
복사

[예제 04-06] 선택하여 붙여넣기 옵션을 적용하는 copyTo 메서드

function copyDataWithConditions() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const T_SHEET4 = SS.getSheetByName('시트4') T_SHEET2.getDataRange().copyTo(T_SHEET4.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false) }
JavaScript
복사

copyTo를 여러 번 적용하는 경우

function copyDataWithConditions() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const T_SHEET4 = SS.getSheetByName('시트4') T_SHEET2.getDataRange().copyTo(T_SHEET4.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false) T_SHEET2.getDataRange().copyTo(T_SHEET4.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false) }
JavaScript
복사

[예제 04-07] 시트2 탭을 활성화된 스프레드시트와 새로운 구글 시트에 복사

function copyTab() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const NEW_SS = SpreadsheetApp.create('newSheet') T_SHEET2.copyTo(SS) T_SHEET2.copyTo(NEW_SS) Logger.log(NEW_SS.getUrl()) }
JavaScript
복사

[예제 04-08] 구글 시트 ID를 지정해서 탭을 복사

function copyTabToSpecificSheet() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET2 = SS.getSheetByName('시트2') const SS_byId = SpreadsheetApp.openById('ID') T_SHEET2.copyTo(SS_byId) }
JavaScript
복사

[예제 04-09] 선두 행을 삭제하는 slice 적용

function deleteLabel() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataSlice = data.slice(1) Logger.log(dataSlice) }
JavaScript
복사

중간 부분을 추출하는 slice

function deleteLabel() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataSlice = data.slice(2, 5) Logger.log(dataSlice) }
JavaScript
복사

[예제 04-10] filter로 A열이 고양이인 데이터만 필터링

function filterCat() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataFilter = data.filter(row => row[0] == '고양이') Logger.log(dataFilter) }
JavaScript
복사

나이가 8살 이상인 반려동물을 필터링

function filterAge() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataFilter = data.filter(row => row[2] >= 8) Logger.log(dataFilter) }
JavaScript
복사

나이가 9살 이상이거나 5살 이하인 반려동물을 필터링

function filterAgeBetween() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataFilter = data.filter(row => row[2] >= 9 || row[2] <= 5) Logger.log(dataFilter) }
JavaScript
복사

행에 ‘보미’가 들어있는 행만 필터링

function filterName() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataFilter = data.filter(row => row[1].includes('보미')) Logger.log(dataFilter) }
JavaScript
복사

행에 ‘비’가 들어있는 행만 필터링

function filterName() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataFilter = data.filter(row => row[1].includes('비')) Logger.log(dataFilter) }
JavaScript
복사

[예제 04-11] map으로 배열에 2를 곱해서 새로운 배열 만들기

function multiply2() { const data = [1, 2, 3, 4, 5] let dataMap = data.map(item => item * 2) Logger.log(dataMap) }
JavaScript
복사

[예제 04-12] map으로 원하는 열만 추출해 2차원 배열로 만들기

function colExtract() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataMap = data.map(item => [item[0], item[2]]) Logger.log(dataMap) }
JavaScript
복사

이름, 반려동물 종류, 나이 순으로 배열 바꾸기

function colChange() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataMap = data.map(item => [item[1], item[0], item[2]]) Logger.log(dataMap) }
JavaScript
복사

나이에 살을 붙여서 표시하기

function colChangeAddText() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataMap = data.map(item => [item[1], item[0], item[2] + '살']) Logger.log(dataMap) }
JavaScript
복사

[예제 04-13] reduce로 배열의 모든 값 합산

function sumElements() { const data = [1, 2, 3, 4, 5] let dataReduced = data.reduce((acc, cur) => acc + cur, 0) Logger.log(dataReduced) }
JavaScript
복사

[예제 04-14] reduce로 배열의 모든 값 합산 (로그 표시)

function sumElementsWithLog() { const data = [1, 2, 3, 4, 5] let dataReduced = data.reduce((acc, cur) => { Logger.log([acc, cur, acc + cur]) return acc + cur }, 0) Logger.log(dataReduced) }
JavaScript
복사

[예제 04-15] reduce로 2차원 배열을 1차원 배열로 만들기

function reduceArray() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataReduced = data.reduce((acc,cur) => acc.concat(cur),[]) Logger.log(dataReduced) }
JavaScript
복사

reduce로 2차원 배열을 1차원 배열로 만들기 - 로그 표시

function reduceArrayWithLog() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET6 = SS.getSheetByName('시트6') const data = T_SHEET6.getDataRange().getValues() let dataReduced = data.reduce((acc, cur) => { Logger.log([acc, cur, acc.concat(cur)]) return acc.concat(cur) }, []) Logger.log(dataReduced) }
JavaScript
복사

익숙해지기 문제와 답

// 1) “데이터” 탭의 “A1” 셀에 “앱스 스크립트”를 입력하기 위해서 코드를 완성해보세요. function myFunction(){ SpreadsheetApp.getActiveSpreadsheet().getRange('데이터!A1').setValue('앱스 스크립트') }
JavaScript
복사
// 2) “데이터” 탭의 “A1:C1” 셀에 “구글, 앱스, 스크립트”를 입력하기 위해서 data에 값을 어떻게 할당해야 할까요? function myFunction() { let data = [[1, 2, 3]] SpreadsheetApp.getActiveSpreadsheet().getSheetByName('데이터').getRange('A1:C1').setValues(data) }
JavaScript
복사
// 3) “데이터” 탭의 전체 값을 “데이터2” 탭으로 복사하기 위해서 마지막 행의 코드를 완성해보세요. function myFunction() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET1 = SS.getSheetByName('데이터') const T_SHEET22 = SS.getSheetByName('데이터2') T_SHEET1.getDataRange().copyTo(T_SHEET2.getRange(1, 1)) }
JavaScript
복사
// 4) “데이터” 탭을 새로운 구글 시트 파일로 복사하기 위해서 마지막 2행의 코드를 완성해보세요. function myFunction() { const SS = SpreadsheetApp.getActiveSpreadsheet() const T_SHEET1 = SS.getSheetByName('데이터') const NEW_SS = SpreadsheetApp.create('새 파일명') T_SHEET1.copyTo(NEW_SS) Logger.log(NEW_SS.getUrl()) }
JavaScript
복사
// 5) arr에 slice 메서드를 적용해서 arrSliced에 [3, 4]를 할당하려면 어떻게 해야 할까요? function myFunction() { const arr = [1, 2, 3, 4, 5] let arrSliced = arr.slice(2,4) Logger.log(arrSliced) }
JavaScript
복사
// 6) arr에 filter 메서드를 적용해서 arrFiltered에 고양이가 들어간 요소만 할당하려면 어떻게 해야할까요? function myFunction() { const arr = [['고양이', '핑', 8], ['강아지', '보미', 10], ['고양이', '퐁', 8]] let arrFiltered = arr.filter(row => row[0] == '고양이') Logger.log(arrFiltered) }
JavaScript
복사
// 7) arr에 map 메서드를 적용해서 arrMapped의 실행 로그처럼 표시하려면 어떻게 해야할까요? function myFunction() { const arr = [['고양이', '핑', 8], ['강아지', '보미', 10], ['고양이', '퐁', 8]] let arrMapped = arr.map(item => [item[1], item[2] + '살', item[0]]) Logger.log(arrMapped) }
JavaScript
복사
// 8) arr에 reduce 메서드를 적용해서 값을 모두 더하려면 어떻게 해야할까요? function myFunction() { const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] let arrReduced = arr.reduce((acc, cur) => acc + cur, 0) Logger.log(arrReduced) }
JavaScript
복사