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
복사