구글에서 제공하는 datasheet와 document 관련된 apps에 관련 script가 존재하며,
본인은 datasheet를 가지고 간단한 script가 간단히 필요했기에 이를 가지고 TEST 한 결과 쉽게 작성가능했다.
다른 Apps도 쉽게 가능할 것 같으며, 복잡한 Apps은 Javascript를 전문적으로하는 Web 기술이 있어야 할것으로 생각된다.
하지만 구글에서 Manual을 제공을 하고 있어 , 이를 따라하면 누구나 쉽게 작성가능하다.
다만 한글 Manual 지원이 안되어서 문제일 뿐이다.
손쉽게 영어 단어 check script를 만들기 위해서 이것을 시작했지만, 별로 도움이 안되고
그냥 손으로 쓰는 것이 가장 도움이 되는 것 같다.
2. Datasheet Apps Script
본인의 Gdrive에 가서 Datasheet 만들거나, 가진것을 가지고 TEST 해보자.
- open Google Datasheet
- Tools > Script editor or 도구->스크립터 편집기 실행
- Test Function을 만들어보자.
- Project를 저장하고, 권한을 설정하고 실행을 해보자.
- 스크립터 편집기에서 보기->로그 보면 실행된 결과를 확인 가능하다.
이곳에서 보기->로그를 통해 간단히 확인 가능하다.
// Google의 example을 간단히 TEST function logProductInfo() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); for (var i = 0; i < data.length; i++) { Logger.log('Product name: ' + data[i][0]); Logger.log('Product number: ' + data[i][1]); } }
3. Datasheet 에 App Script TEST
3.1 Basic Datasheet Apps Script
아래와 같이 메세지를 알려주는 간단한 함수를 만들어 보자,
alert message로 변경을 하고 datasheet 값을 읽어 매번 알려주는 것이다.
위의 log를 alert로 변경을 하고, 너무 길면 적당히 알려주도록 15까지만 하자.
아래는 Javascript와 동일하다.
function logProductInfo() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var ui = SpreadsheetApp.getUi(); var numfinsh=15; if(data.length < 15) numfinsh = data.length; for (var i = 0; i < numfinsh; i++) { var msg = "Test2 Number:" + i + " /" + data.length + "\n\n"; msg += data[0][2] + ":" + data[i][2] + "\n"; msg += data[0][3] + ":" + data[i][3] + "\n\n"; msg += data[0][4] + ":"+ data[i][4] + "\n"; ui.alert(msg); } }
- TEST 하는 방법
실행버튼을 누르면 실행이 된다.
* 만약동작이 되지 않는다면 프로젝트에서 문서를 찾아서 직접 넣어 추가해보자.
게시->부가기능으로 테스트
- 실제적용하는 방법
위와 같이 하면 문서의 이벤트 발생시마다 함수가 호출이되어 적용이 됨
3.2 개선된 Datasheet Apps Script
트리거로 파일 오픈할때 onOpen을 적용하여, "My Menu" 만들어 함수를 실행하도록하자.
원하지 않는다면, 멈추는 기능을 추가하자.
물론 아래도 버그가 있다,
mySecondFunction이나, myThirdFunction을 구현을 안했다.
추후 TEST를 위해서 더 유지를 했다.
function onOpen(e) { SpreadsheetApp.getUi() .createMenu('My Menu') .addItem('My menu item', 'my1stFunction') .addSeparator() .addSubMenu(SpreadsheetApp.getUi().createMenu('My sub-menu') .addItem('One sub-menu item', 'mySecondFunction') .addItem('Another sub-menu item', 'myThirdFunction')) .addToUi(); } function my1stFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var ui = SpreadsheetApp.getUi(); for (var i = 0; i < data.length; i++) { var msg = "Test Number:" + i + " /" + data.length + "\n\n"; msg += data[0][2] + ":" + data[i][2] + "\n"; msg += data[0][3] + ":" + data[i][3] + "\n\n"; msg += data[0][4] + ":"+ data[i][4] + "\n"; var result = ui.alert(msg,ui.ButtonSet.OK_CANCEL); if (result == ui.Button.CANCEL) break; } }
실제로 적용 해보면, 어렵지 않으며, 약간의 시간이 있다면, 메뉴얼 읽는 시간과
소스 가지고 와서 붙히기 능력과 있으면 된다. ㅋㅋㅋ
메뉴를 바꾸고 싶다면 아래의 사이트에서 본인이 원하는 메뉴로 바꿔보고 테스트 해보자.
어렵지 않다.
4. Apps Script 관련사항
프로젝트를 보면 다양한 기능을 제공을 하고 있으며, 프로젝트를 동시에 여러개를 운영이 가능하다.
아래는 간단히 기능만 소개한다.
- 게시->배포기능
- 웹앱 배포 : 크롬 웹 방식으로 하는 것 같음
- API 실행가능으로 배포 : Google API에 추가하는 식으로 하는 것 같음.
- 스프레드 부가기능으로 배포: 다른 사람도 나의 Script을 사용가능한 것 같음.
그러면 HTML안에서 Javacript를 넣어 이를 다 Control이 가능할 것 같다.
위 사항들은 어디까지나 개인적인 생각일뿐이다.
아직 배포를 못해봤으며, Key 값이 없다.
Key가 존재하면, 리소스->라이브러리 도 이용가능하고 다양하게 작성이 가능할 거 같다.
- 프로젝트 기본정보확인 (파일->속성)
저번에 Google API를 사용하려고 Key를 얻을려고 했더니, $100까지만 무료이고,
이후 유료인걸로 기억하고 있어, 추후 더 자세한 사항을 읽어봐야겠다.
나중에 필요하다면 회사차원에서 해보겠다.
- Google API 적용
다른 Google API를 이곳에서도 적용이 가능한 것 같다.
이것을 하려면, Key값을 얻어야 할것 같다.
위의 파일->속성에서 보면 자신이 Key를 가지고 있는지 확인 가능하다.
참고사항
- Dialogs Script
https://developers.google.com/apps-script/guides/dialogs
https://developers.google.com/apps-script/reference/base/button-set
- Custom Menu
https://developers.google.com/apps-script/guides/menus
- Datasheet Apps Script Manual
https://developers.google.com/apps-script/reference/spreadsheet/sheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getUi()