115회
구글시트, 업무 자동화 특별 스터디 (4강) | 실시간 검색 + 구글 드라이브 연동까지!💡
강의노트
댓글(3)
강의 자료
- [라이브강의] 구글시트 Apps Script 기초 5주 특별 스터디 - 4강예제파일실습파일은 영상 하단 댓글 링크에서도 제공합니다.
라이브 미션
- 사전미션 ① : 네이버 연관검색어 일괄 조회 서식 만들기
/** * ● 도전! 사전미션 풀기 * 네이버 연관검색어를 일괄 검색합니다. **/ function listSearchResult() { // 구글스프레드시트 기본 변수 선언 var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); // 시트에 사용된 마지막 행 찾기 var endRow = activeSheet.getLastRow(); // 두번째 행부터 마지막 행까지 돌아가며 연관검색어 출력합니다. for (var i = 2; i <= endRow; i++) { // Hint ① : activeSheet.getRange().getValue(); // Hint ② : activeSheet.getRange().setValue(getNaverSearch(검색단어)); } // 검색 완료 팝업 알림창 띄우기 // Hint : app.getUi().alert } /** * 네이버 연관검색어 목록을 반환합니다. * * @param value 연관검색어를 검색할 단어입니다. * @customfunction */ function getNaverSearch(value) { var url = "https://ac.search.naver.com/nx/ac?q="+value+"&frm=nv&st=100" var response = UrlFetchApp.fetch(url); var webContent = response.getContentText(); var jsonData = JSON.parse(webContent); var result = jsonData.items; var sResult = result.join(); return sResult; } /** * 나만의 커스텀 메뉴를 등록합니다 * (Apps Script 자동화 2번째 강의 참고해주세요!) **/ function initCustomMenu() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu("커스텀메뉴"); var submenu = ui.createMenu("네이버관련"); submenu.addItem("연관검색어일괄조회","listSearchResult"); menu.addSubMenu(submenu); menu.addSeparator(); menu.addItem("실시간인기검색어조회","printRealtimeSearch"); menu.addSeparator(); menu.addItem("드라이브저장","saveToDrive"); menu.addToUi(); } function onOpen() { initCustomMenu(); }
보충 자료
📌 Apps Script 자동화 스터디 (4일차) - 예제 파일 및 코드
/** * 시그널 홈페이지에서 실시간 인기검색어 Top 10 목록을 반환합니다. * @customfunction */ function getRealtimeSearch() { // ● 시그널 실시간 인기 검색어 조회 api 링크 : https://api.signal.bz/news/realtime/ /* Apps Script 웹 데이터 크롤링 마스터 코드 스니펫 var url = "URL주소" var response = UrlFetchApp.fetch(url); var webContent = response.getContentText(); var jsonData = JSON.parse(webContent); //JSON일 경우 데이터 변환 */ /* 아래 코드를 사용해 배열의 각 항목을 새로운 배열로 감쌀 수도 있습니다. a.forEach((value,index,array) => array[index] = [value]); */ } /** * 현재 활성화된 시트를 구글드라이브에 엑셀 파일로 저장합니다. */ function saveToDrive() { /* ● 현재 시간을 출력하는 마스터코드 스니펫 */ var currentTime = Utilities.formatDate(new Date, Session.getTimeZone(), "yyMMddHHmmss") /* 구글 드라이브 변수 선언 및 파일 생성 var folder = DriveApp.getFolderByID 또는 GetFoldersByName folder.createFile(...) DriveApp 클래스 전체 목록은 아래 링크를 참고하세요. https://developers.google.com/apps-script/reference/drive/drive-app */ } /** * 실시간 인기검색어 Top10 목록을 시트에 출력합니다. */ function printRealtimeSearch() { /* 구글스프레드시트 기본 변수 선언 var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); */ /* 현재 활성화된 시트 마지막 행 찾기 */ /* 현재 시간을 지정한 날짜 서식으로 반환합니다. (2회차 강의 참고) */ var displayTime = Utilities.formatDate(new Date, Session.getTimeZone(), "y-M-d H:m:s") /* 실시간 인기 검색어 목록 받아온 후, 현재 시간과 함께 시트에 출력하기*/ } /** * 특정 열의 마지막 데이터가 입력된 행 번호를 반환합니다. */ function getEndRow() { /* 구글스프레드시트 기본 변수 선언 var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); */ /* 특정 열에서 마지막으로 비어있는 셀 찾기 */ // Hint ① : activeSheet.getMaxRows() -> 활성화 된 시트의 사용가능한 전체 행 개수 (기본값 : 1,000) // Hint ② : Range.getNextDataCell(SpreadSheetApp.Direction.방향) -> 현재 셀에서 연속된 범위의 끝으로 이동 (Ctrl+방향키) // Hint ③ : Range.getRow() -> 현재 셀의 행 번호 반환 }
✅ Apps Script 자동화 스터디 (4일차) - 강의 완성 코드
// <!----------------- 사전 미션 완성 ------------------> /** * ● 도전! 사전미션 풀기 * 네이버 연관검색어를 일괄 검색합니다. **/ function listSearchResult() { // 구글스프레드시트 기본 변수 선언 var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); // 시트에 사용된 마지막 행 찾기 var endRow = getEndRow(1); // 두번째 행부터 마지막 행까지 돌아가며 연관검색어 출력합니다. for (var i = 2; i <= endRow; i++) { // Hint ① : activeSheet.getRange().getValue(); // Hint ② : activeSheet.getRange().setValue(getNaverSearch(검색단어)); var searchValue = activeSheet.getRange(i,1).getValue(); var searchResult = getNaverSearch(searchValue); activeSheet.getRange(i,2).setValue(searchResult); } // 검색 완료 팝업 알림창 띄우기 // Hint : app.getUi().alert app.getUi().alert("연관검색어 출력을 완료했습니다."); } /** * 네이버 연관검색어 목록을 반환합니다. * * @param value 연관검색어를 검색할 단어입니다. * @customfunction */ function getNaverSearch(value) { var url = "https://ac.search.naver.com/nx/ac?q="+value+"&frm=nv&st=100" var response = UrlFetchApp.fetch(url); var webContent = response.getContentText(); var jsonData = JSON.parse(webContent); var result = jsonData.items; var sResult = result.join(); return sResult; } /** * 나만의 커스텀 메뉴를 등록합니다 * (Apps Script 자동화 2번째 강의 참고해주세요!) **/ function initCustomMenu() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu("커스텀메뉴"); var submenu = ui.createMenu("네이버관련"); submenu.addItem("연관검색어일괄조회","listSearchResult"); menu.addSubMenu(submenu); menu.addSeparator(); menu.addItem("실시간인기검색어조회","printRealtimeSearch"); menu.addSeparator(); menu.addItem("드라이브저장","saveToDrive"); menu.addToUi(); } function onOpen() { initCustomMenu(); } // <!------------------ 강의 실습 코드 완성----------------> /** * 시그널 홈페이지에서 실시간 인기검색어 Top 10 목록을 반환합니다. * @customfunction */ function getRealtimeSearch() { // ● 시그널 실시간 인기 검색어 조회 api 링크 : https://api.signal.bz/news/realtime/ /* Apps Script 웹 데이터 크롤링 마스터 코드 스니펫 var url = "URL주소" var response = UrlFetchApp.fetch(url); var webContent = response.getContentText(); var jsonData = JSON.parse(webContent); //JSON일 경우 데이터 변환 */ var url = "https://api.signal.bz/news/realtime/" var response = UrlFetchApp.fetch(url); var webContent = response.getContentText(); var jsonData = JSON.parse(webContent); //JSON일 경우 데이터 변환 var top10 = jsonData.top10; var result = []; for (var i = 0; i <= top10.length - 1; i++) { result.push([top10[i].keyword]); //Logger.log(top10[i].keyword); } return result; /* 아래 코드를 사용해 배열의 각 항목을 새로운 배열로 감쌀 수도 있습니다. a.forEach((value,index,array) => array[index] = [value]); */ /** * [{state=s, rank=1.0, keyword=삼남매가 용감하게}, {rank=2.0, state=s, keyword=슈룹}, {keyword=천원짜리 변호사 12회, rank=3.0, state=s}, {state=s, keyword=최성빈, rank=4.0}, {state=s, rank=5.0, keyword=이재윤}, {state=s, keyword=날씨, rank=6.0}, {state=s, rank=7.0, keyword=이재명}, {keyword=권성동 이태원 세월호처럼, rank=8.0, state=s}, {keyword=김은혜, state=+, rank=9.0}, {keyword=리커창 한반도 비핵화, rank=10.0, state=-}] * */ } /** * 현재 활성화된 시트를 구글드라이브에 엑셀 파일로 저장합니다. */ function saveToDrive() { /* ● 현재 시간을 출력하는 마스터코드 스니펫 */ var currentTime = Utilities.formatDate(new Date, Session.getTimeZone(), "yyMMddHHmmss") //1EjdPaRc9sByc_vJtMaimKcNoRGwtx_ub var gFolder = DriveApp.getFolderById("1EjdPaRc9sByc_vJtMaimKcNoRGwtx_ub"); var result = getRealtimeSearch(); var strResult = result.join(); gFolder.createFile(currentTime+"실시간인기검색어.txt",strResult); /* 구글 드라이브 변수 선언 및 파일 생성 var folder = DriveApp.getFolderByID 또는 GetFoldersByName folder.createFile(...) DriveApp 클래스 전체 목록은 아래 링크를 참고하세요. https://developers.google.com/apps-script/reference/drive/drive-app */ } /** * 실시간 인기검색어 Top10 목록을 시트에 출력합니다. */ function printRealtimeSearch() { /* 구글스프레드시트 기본 변수 선언 var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); */ /* 현재 활성화된 시트 마지막 행 찾기 */ /* 현재 시간을 지정한 날짜 서식으로 반환합니다. (2회차 강의 참고) */ var displayTime = Utilities.formatDate(new Date, Session.getTimeZone(), "y-M-d H:m:s") /* 실시간 인기 검색어 목록 받아온 후, 현재 시간과 함께 시트에 출력하기*/ } /** * 특정 열의 마지막 데이터가 입력된 행 번호를 반환합니다. */ function getEndRow(colNo) { // endRow = getEndRow(1); /* 구글스프레드시트 기본 변수 선언 var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); */ var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var activeSheet = ss.getActiveSheet(); var maxRow = activeSheet.getMaxRows(); var maxRange = activeSheet.getRange(maxRow,colNo); var lastRange = maxRange.getNextDataCell(SpreadsheetApp.Direction.UP); var endRow = lastRange.getRow(); return endRow; //var lastRow = activeSheet.getLastRow(); //Logger.log("endRow: " + endRow + " , lastRow :" + lastRow); /* 특정 열에서 마지막으로 비어있는 셀 찾기 */ // Hint ① : activeSheet.getMaxRows() -> 활성화 된 시트의 사용가능한 전체 행 개수 (기본값 : 1,000) // Hint ② : Range.getNextDataCell(SpreadSheetApp.Direction.방향) -> 현재 셀에서 연속된 범위의 끝으로 이동 (Ctrl+방향키) // Hint ③ : Range.getRow() -> 현재 셀의 행 번호 반환 }
시간대별 목차
- ----- 1교시 -----
- 완성예제 미리보기00:00
- 지난주 배운 내용 복습01:22
- 사전 미션 - 검색어 일괄 조회 툴 만들기06:43
- 상황별 마지막 행을 찾는 2가지 방법18:45
- Apps Script 마지막 행 검색 함수 만들기25:24
- 커스텀 메뉴 추가 및 검색어 일괄조회 테스트35:52
- ----- 2교시 -----
- 실시간 인기 검색어 조회 함수 만들기37:16
- 빅데이터를 빠르게 처리하는 방법48:26
- 받아온 각 항목을 배열로 만들기52:37
- 실시간 인기 검색어 함수 테스트57:25
- Apps Script 구글 드라이브 연동 기초58:42
- 사전미션 ① : 네이버 연관검색어 일괄 조회 서식 만들기
로그인
지금 가입하고 댓글에 참여해보세요!
3 댓글
강의노트
강의 자료
- [라이브강의] 구글시트 Apps Script 기초 5주 특별 스터디 - 4강예제파일실습파일은 영상 하단 댓글 링크에서도 제공합니다.💡 보충 자료 보기 (클릭!)
시간대별 목차
- ----- 1교시 -----
- 완성예제 미리보기00:00
- 지난주 배운 내용 복습01:22
- 사전 미션 - 검색어 일괄 조회 툴 만들기06:43
- 상황별 마지막 행을 찾는 2가지 방법18:45
- Apps Script 마지막 행 검색 함수 만들기25:24
- 커스텀 메뉴 추가 및 검색어 일괄조회 테스트35:52
- ----- 2교시 -----
- 실시간 인기 검색어 조회 함수 만들기37:16
- 빅데이터를 빠르게 처리하는 방법48:26
- 받아온 각 항목을 배열로 만들기52:37
- 실시간 인기 검색어 함수 테스트57:25
- Apps Script 구글 드라이브 연동 기초58:42