2016년 7월 30일 토요일

Google Contacts group with Apps script

Why and How - EOJJI Blog 게시물 중 [usage] Autocomplete Email Addresses in Apps Script - Google Apps를 세부적으로 살펴보면 search_(e) 함수에 사용된 UI Service가 더 이상 지원되지 않습니다.

function search_(e){
  var app = UiApp.getActiveApplication();

UI Service Deprecated. The UI service was deprecated on December 11, 2014. To create user interfaces, use the HTML service instead.

더 나은 방법으로 Google 주소록에서 연락처를 그룹으로 관리하는 방법을 추천합니다.
당연히 그룹에 연락처를 추가할 때 이메일 자동 완성 기능이 지원됩니다.

참조:



연락처 그룹 만들기


  1. Google 주소록으로 이동합니다.
  2. 왼쪽에서 그룹 다음 새 그룹을 클릭합니다.
  3. 새로운 그룹 이름을 입력합니다.
  4. 그룹 만들기를 클릭합니다.



Google Contacts - Group



Google Contacts - Group - New Group - eojji folder



그룹에 연락처 추가


  1. Google 주소록으로 이동합니다.
  2. 연락처의 사진 또는 사용자 사용자 위로 마우스를 이동한 후 표시되는 체크박스를 선택합니다. 연락처 이름 옆에 사진이나 아이콘이 표시되지 않으면 기존 주소록의 그룹 연락처로 이동합니다.
  3. 오른쪽 상단에서 그룹 그룹 주소록을 클릭합니다.
  4. 연락처를 추가하려는 그룹 이름을 클릭합니다. 연락처가 추가된 그룹 옆에 체크 표시가 나타납니다.



Google Contacts - Group - eojji folder Group 사용자 추가


Google Contacts - Group - eojji folder Group 사용자 추가(기존 연락처)



Google Contacts - Group - eojji folder Group 사용자 추가


Google Apps Script - Reference - contacts - contact-group - getContacts()

https://developers.google.com/apps-script/reference/contacts/contact-group#getContacts()
 // The code below retrieves all the contacts in the group named "Work Friends"
 var group = ContactsApp.getContactGroup('Work Friends');
 var contacts = group.getContacts();



Google Apps Script - Reference - contacts - contact - getEmails() 

https://developers.google.com/apps-script/reference/contacts/contact#getEmails()
 // The code below retrieves a contact named "John Doe" and logs the email addresses
 // associated with that contact
 var contacts = ContactsApp.getContactsByName('John Doe');
 var emails = contacts[0].getEmails();
 for (var i in emails) {
   Logger.log(emails[i].getAddress());
 }


Google 사진 앨범: https://goo.gl/photos/sCmMwKN6EuT1165J6 

2016년 7월 29일 금요일

Create a simple data entry form with Apps script

Create a simple data entry form with Apps script


Google sheet 프로그래밍 책을 참조하여 단순한 Data 입력 폼을 만들어 봤습니다.

Project code: https://goo.gl/mT6THg


Code Example 7.2 Sheet에서 Data Entry 메뉴 선택 후 Show Form 클릭





Data 입력 폼에서 입력한 data는 sheet에 적용됩니다.


참조:

Google Sheets Programming With Google Apps Script (2015 Revision Complete)

All the example code in this book is available for download as a single file at https://github.com/Rotifer/GoogleSpreadsheetProgramming_2015



Code Example 7.2

/**
* Create a simple data entry form that collects
* two text values and writes them to the active sheet.
* See also "index.html" in code example ch07.html
    https://github.com/Rotifer/GoogleSpreadsheetProgramming_2015/blob/master/ch07.gs

    2016년 7월 28일 목요일

    [usage] Autocomplete Email Addresses in Apps Script - Google Apps

    Review  


    개발하다 보면 텍스트 입력 창에 자동 완성 기능이 필요합니다.

    문자를 입력하기 시작하면 입력된 문자로 자료를 검색하여 나열해 줍니다.
    그 중 하나를 선택하여 입력 창을 완성합니다.

    구글링하다 보니 좋은 자료가 있어 소개합니다.

    Autocomplete Email Addresses in Apps Script

    When composing Gmail conversations, the auto-complete feature allows us to see our matching personal contacts as we type and quickly make our contact selections. This time-saving feature can be duplicated when creating Google Apps Script applications. For instance, if you design an application that requires sending emails, you can leverage this auto-complete feature by using a personal contact list.

    Gmail에서 편지 쓰기를 할 때, 자동 완성 기능은 우리의 입력에 의한 빠른 연락처 선택이 우리의 개인 연락처에 일치하는 것을 볼 수 있습니다. Google 애플리케이션 스크립트 응용 프로그램을 만들 때 시간을 절약하는 이 기능이 중복 될 수 있습니다. 당신이 이메일을 보내야 하는 응용 프로그램을 설계 할 경우 예를 들면, 당신은 개인 연락처 목록을 사용하여 자동 완성 기능을 활용할 수 있습니다.


    이 게시물은 더 이상 유효하지 않습니다.

    대신 Google Contacts group with Apps script를 참조하세요.
    이유는 아래와 같습니다.
     search_(e) 함수에 사용된 UI Service가 더 이상 지원되지 않습니다.

    function search_(e){
      var app = UiApp.getActiveApplication();

    UI Service Deprecated. The UI service was deprecated on December 11, 2014. To create user interfaces, use the HTML service instead.

    더 나은 방법으로 Google 주소록에서 연락처를 그룹으로 관리하는 방법을 추천합니다.
    당연히 그룹에 연락처를 추가할 때 이메일 자동 완성 기능이 지원됩니다. 


    2016년 7월 27일 수요일

    [dev] FormAppCreate web app - Apps Script

    Create Google forms - Apps Script

    Eojji folder service의 기능 개선 중에 개발된 기능입니다.
    현재 서비스는 관리자 한 명이 고정되어 있습니다.
    개선된 버전에서는 누구나 관리자가 될 수 있게 만듭니다.

    FormAppCreate web app은 실행 과정에서 Google forms(설문지 또는 양식)와 Google Sheet를 생성합니다.
    생성된 설문지를 열어서 멤버의 이메일을 입력합니다.
    입력된 정보는 Google Sheet에 기록됩니다.
    만들어진 시트는 어찌넷의 백업계정에게 공유됩니다.

    아래 링크를 클릭하여 실행해 볼 수 있습니다.
    FormAppCreate web app



    위의 Open Form 클릭하면 member를 입력할 수 있는 폼이 열립니다.



    위의 폼에 입력한 결과가 시트에 표시됩니다.


    FormAppCreate Source code

    2016년 7월 26일 화요일

    Real-time notifications - Apps Script with Firebase

    Real-time notifications in add-ons with Firebase


    Yet Another Mail Merge는 Google 시트의 부가 기능으로서 Gmail에서 초안으로 저장된 템플릿과 Google 스프레드 시트의 데이터를 사용하여 개인화된 이메일을 일괄적으로 보냅니다.


    이 부가 기능은 수백 개의 메일을 보낼 수 있지만, 이러한 종류의 작업은 일반적으로 몇 분의 시간이 필요합니다. 이때 서버 측에서 작업하는 동안 사용자 인터페이스에 무엇을 표시 할 것인가 하는 문제가 발생합니다.


    Apps Script가 새로운 메일 하나를 보낼 때마다, Firebase 카운터가 증가하고, 다음 그림과 같이 UI가 실시간으로 업데이트됩니다.


    [usage] Google Photos with Blogger

    구글 블로그에 추가한 구글 이미지 주소를 재활용하는 방법입니다.


    블로그에 이미지를 추가 할 때 Google 포토의 앨범에 있는 이미지를 사용할 수 있습니다.
    Google 포토는 고화질 이미지를 무제한으로 저장할 수 있습니다.

    다른 웹 사이트를 작성할 때 블로그에 추가한 이미지 주소를 복사하여 사용하면 어떨까요?
    물론 잘 됩니다.


    주소 붙여 넣기를 적용한 사이트입니다.
    이 사이트는 구글 로그인을 필요로 합니다.






    참조:





    적용한 과정을 정리했습니다.

    • 블로그에 이미지를 추가합니다. (구글 사진 앨범 자료실에서) 








    • HTML 보기 - 이미지 Anchor 부분 복사








    2016년 7월 24일 일요일

    Blogger Guest book - Facebook plugins comments

    페이지 만들기, 수정 또는 삭제

    1. Blogger에 로그인합니다.
    2. 업데이트하려는 블로그를 선택합니다.
    3. 왼쪽 메뉴에서 페이지를 선택합니다.
    4. 새 페이지를 클릭합니다.
    5. 페이지 제목 및 기타 정보를 추가합니다.
    6. 저장, 미리보기 또는 게시를 클릭합니다.



    Facebook plugins comments



    Step 2: Include the JavaScript SDK on your page once, ideally right after the opening tag.

    3단계: 페이지에서 플러그인을 표시할 위치에 이 코드를 넣으세요.



    어찌 블로거 방명록에서 페이스북 댓글 달기



    페이스북에서 결과 확인

    Blogger 페이지 표시


    1. Blogger에 로그인합니다.
    2. 업데이트하려는 블로그를 선택합니다.
    3. 왼쪽 메뉴에서 레이아웃을 클릭합니다.
    4. 페이지를 표시하려는 섹션에서 가젯 추가를 클릭합니다.
    5. 창이 나타나면 추가 를 클릭합니다.
    6. 설정한 후에 저장을 클릭합니다.
    7. 오른쪽 상단에서 배치 저장을 클릭합니다.

    페이지가 나타나는 위치를 변경하려면 새 위치로 해당 가젯을 드래그합니다.



    이미지: Google Photos 앨범

    2016년 7월 22일 금요일

    [dev] test Google Sheets as a Database – INSERT with Apps Script using POST/GET methods

    Google Sheets as a Database – INSERT with Apps Script using POST/GET methods




    Google 문서에 테스트 과정을 상세하게 설명했습니다.
    Google 문서를 참조하세요. : https://goo.gl/uP4Kru
    관련 이미지는 Google 사진 앨범에 있습니다. : https://goo.gl/photos/Pqh1GgbYB7NFoRZw9


    • Google Sheets as a Database – INSERT with Apps Script using POST_GET methods의 사본 - 웹 앱으로 배포



    • Google Sheets as a Database – INSERT with Apps Script using POST_GET methods의 사본 - 웹 앱으로 배포 - 현재 웹 앱 URL

    현재 웹 앱 URL:

    https://script.google.com/macros/ …./exec



    Web Apps | Apps Script | Google Developers

    URL parameters
    https://developers.google.com/apps-script/guides/web#url_parameters

    For instance, you could pass parameters such as username and age to a URL as shown below:

    https://script.google.com/.../exec?username=jsmith&age=21

    Then, you can display the parameters like so:function doGet(e) { var params = JSON.stringify(e); return HtmlService.createHtmlOutput(params);}


    Share Google Drive by Eojji.net

    Google 드라이브 무제한 저장 공간을 일반 Google(Gmail 계정) 사용자에게 공유하는 방법입니다.

    어찌넷 회원은 어찌넷 Google 드라이브에 일반 구글 사용자의 폴더를 만들고 사용자를 초대합니다. 초대 받은 사용자는 자신의 구글 계정으로 접속하여 초대 이메일을 확인합니다.
    이하는 상세 내용입니다.

    어찌넷 폴더 공유하기





    • 폴더 이름 정하기


    • 폴더를 선택하고 화면 오른쪽 상단에 있는 공유 아이콘 Share을 클릭합니다.
    • 일반 사용자의 구글 계정(gmail.com)을 입력하고 보내기 버튼을 클릭합니다.



    구글 일반 사용자가 할일

    • 일반 사용자는 브라우저의 주소 창에  Google 주소(https://www.google.co.kr)를 입력하여 Google 사이트로 이동합니다.
    • 브라우저의 상단 오른쪽에 있는 로그인 버튼을 클릭합니다.
    • 자신의 구글 계정으로 로그인합니다. 구글 계정은 사진과 같이 자신의 아이디와 @gmail.com으로 구성됩니다. )




    • 메일 서비스로 이동하여 받은 편지함에서 어찌넷에서 보낸 공동작업 권한 공유 메일을 확인합니다.
    • 메일 내용 중에서 열기 버튼을 클릭합니다.




    • 드라이브에 추가 버튼 클릭



    • 드라이브에서 열기 버튼 클릭



    • 파일이나 폴더를 선택한 후 브라우저로 드래그 앤 드롭합니다.

    이렇게 올린 파일의 소유자는 일반 구글 사용자입니다.
    따라서 자신의 구글 드라이브 용량이 소비됩니다.

    이것을 해결하고자 어찌 폴더 서비스를 만들었습니다.

    어찌 폴더 서비스를 사용하여 어찌넷에 폴더나 파일을 올립니다.
    어찌넷에서 제공하는 복사본을 구글 드라이브 공유 문서함에서 확인합니다.
    복사본이 제대로 복사었으면 원본 파일을 삭제합니다.

    어찌 폴더 서비스는 아래 사이트를 참조해 주세요.


    참조:
    Google 드라이브 - 파일 또는 폴더 공유
    출처: https://support.google.com/drive/answer/2494822?hl=ko


    2016년 7월 21일 목요일

    [dev] Team folder data flow

    Team folder data flow



    팀 폴더 웹 앱 명령


    1. 팀 폴더 생성
    2. 복사 신청
    웹 앱을 통해서 팀 폴더 생성을 요청하면 팀 폴더를 만들고 센터와 공유합니다.
    팀 폴더에 폴더나 파일을 저장합니다.
    웹 앱을 통해서 복사 신청을 하면 센터는 센터의 팀 폴더를 복사하여 복사본을 만들고 공유합니다.


    2016년 7월 20일 수요일

    Ask stackoverflow

    페이스북 생활 코딩 그룹에 도움을 청했습니다.
    Google apps script로 서비스 개발 중입니다.Google forms submit event로 복사 작업을 시작했는데Google forms를 사용하지 않고 기능을 구현하려니 어렵네요.아시는 분 도움 주세요.

    몇일째 응답이 없네요.

    어쩔 수 없이 짧은 영어로 Stackoverflow에 질문하고 기다리고 있습니다.

    My old project http://eojji.blogspot.kr/2016/07/eojji-folder-service.htmlNew project https://github.com/eojji/Google-drive-team-folderI wanted replace Anchor URL(web app + email) in Index.htmlGoogle forms submit is installable trigger. Installable trigger run as User who created the trigger.Google forms submit account is fixed. Team folder center account is no fixed.
    reference: Permissions and types of scripts https://developers.google.com/apps-script/guides/services/authorization#permissions_and_types_of_scripts
    Available types of triggers https://developers.google.com/apps-script/guides/triggers/#available_types_of_triggers

    2016년 7월 19일 화요일

    [Usage] eojji folder

    이 예제는 어찌넷 backup 계정으로 운영 중인 어찌 폴더 서비스를 khs 계정으로 운영하기 위해서 서비스 프로젝트 파일을 khs 계정으로 복사하고 설정합니다.

    어찌 폴더 서비스를 사용해 보시고 자신의 계정으로 어찌 폴더 서비스를 제공하고 싶으신 분을 위한 내용입니다.

    시작하기 전에 어찌넷 사용하기를 읽어 보세요.

    적용 대상: 어찌넷 회원

    작업 내용
    1. 어찌 폴더 서비스 프로젝트 파일을 복사합니다.
    2. 복사한 파일의 프로젝트 속성을 설정하고 소스를 수정합니다.
    3. 서비스를 사용할 Gmail 사용자에게 알립니다.

    참조:


    2016년 7월 18일 월요일

    [Usage] eojjiNet

    어찌넷 사용하기

    1. 어찌넷 둘러 보기
    2. 가입 신청서 작성하기
    3. Google 드라이브 시작하기
    4. Google Apps Gmail
    5. Google 포토 시작하기
    6. 어찌 폴더 서비스

    어찌넷에 가입하여 구글 앱스 무제한(Google Apps unlimited) 버전을 사용해 보세요.

    구글 드라이브 무제한 용량을 바탕으로 원하는 작업을 할 수 있습니다.

    어찌 폴더 서비스는 어찌넷의 backup 계정으로 운영 중입니다.

    가입할 때 어찌넷 아이디가 khs 였다면 어찌 폴더 서비스를 khs로 운영할 수 있도록 지원합니다.
    설정이 끝나면 회원의 계정으로 무료 Gmail 사용자들에게 구글 드라이브 무제한 용량을 제공할 수 있습니다. 
    이제 회원이 원하는 분에게 무제한 저장소를 무료로 제공할 수 있습니다.

    Google apps script authorization permissions and types of scripts

    apps-script authorization permissions_and_types_of_scripts

    The user identity that a script runs with — and thus the data it can access — varies based on the scenario in which the script is run, as shown in the table below.
    Type of scriptScript runs as...
    Standaloneadd-on, or bound to Docs, Sheets, or FormsUser at the keyboard
    Custom function in a spreadsheetAnonymous user; however, quota limits count against user at the keyboard
    Web app or Google Sites gadgetUser at the keyboard or script owner, dependent on options selectedwhen deploying the app
    Installable triggerUser who created the trigger


    2016년 7월 17일 일요일

    [dev] Team folder 02

    페이스북 생활코딩 그룹에 도움을 청했습니다.
    https://www.facebook.com/groups/codingeverybody/permalink/1263963496977517/

    구글 앱스 소스 주소를 공개했지만 소스를 보려면 구글에 로그인 해야 하네요.
    예의가 아닌 것 같아서 깃허브를 알아보고 있습니다. 

    앱스 스크립트를 이클립스에 import하면 로컬에 파일이 생성됩니다.
    깃 허브 저장소 만들고 저장소에 로컬 파일을 드래그앤 드롭해서 올렸습니다.

    Google Drive team folder source: https://github.com/eojji/Google-drive-team-folder

    작업에 필요한 자료를 날림으로 적어 봅니다.

    이클립스에서 Apps Script 개발하기를 위해서 Google Plugin for Eclipse - Developing Apps Script Projects in Eclipse 참조

    Usage

    You will first need to sign in by clicking Sign in to Google in the bottom-left corner of Eclipse. After you've signed in, you can import an existing Apps Script project from Google Drive into your local workspace.

    Importing a Project

    To get started with a project, select File > Import, then select Apps Script Project under the Google group.


    1. Install Eclipse

    • Java SE Development Kit 8 Downloads


    jdk-8u91-windows-x64.exe


    -----------------

    eclipse-inst-win64.exe

    C:\Users\EOJJI\eclipse\java-mars
    C:\Users\EOJJI\workspace




    2. Google Plugin for Eclipse




    This guide walks you through creating and deploying your first web application. For more details, please see the User's Guide.



    Installing the Google Plugin for Eclipse from a local update archive

    com.google.gdt.eclipse.suite.4.5.update.site_3.9.2.zip




    [dev] Team folder 01

    Eojji folder service는  Google Apps script로 만든 Google Drive의 폴더를 복사하는 프로그램입니다.

    구글 설문지를 통해 파일 복사 신청을 받아서 복사 작업을 시작합니다.
    이때 설문지 문서 소유자의 계정으로 실행됩니다.

    다른 곳에서 이 서비스를 사용하기 위해서는 구글 설문지를 복사해서 사용해야 합니다.





    Team folder 개발에서는 구글 설문지의 기능을 웹 앱으로 대체할 생각입니다.
    참조: Team folder source code https://goo.gl/noJU5L
    테스트 웹 앱 주소: https://script.google.com/…/AKfycbwvKkUeFjOu8LJ_-Xh7BN…/exec
    폴더 복사 요청 링크를 클릭하면 시트에 이메일이 수집됩니다.



    2016년 7월 13일 수요일

    GroupsApp.Role.OWNER




    function myGroupsApp() {
      var email = Session.getActiveUser().getEmail();  
      var strDomain = email.split(/@/);
      var supportEmail = 'support@' + strDomain[1];
      var group = GroupsApp.getGroupByEmail(supportEmail);
      if (group.getRole(email) == GroupsApp.Role.OWNER) {
        Logger.log('These are the group owners ');
      }
    }

    Google Groups for Business

    어찌 폴더 서비스( https://eojji.blogspot.kr/2016/07/eojji-folder-service.html )는 그대로 두고 새로운 서비스를 준비 중입니다.
    어찌 폴더 서비스는 무제한 저장 공간을 제공하지만 어찌 계정의 구글 드라이브를 사용했습니다.

    새 서비스는 구글 앱스 도메인내에서 팀 단위의 파일을 그룹 관리자 계정에 모으는 서비스가 될 것입니다.
    새 서비스에 Google Groups for Business를 사용하기 위해서 준비 중입니다.


    var groups = GroupsApp.getGroups();
    Logger.log('You are a member of %s Google Groups.', groups.length);





    Google Apps 관리 콘솔에 로그인


    앱 - Google Apps - Groups for Business에 대한 설정 - 고급 설정




    Groups for Business 사용/사용 중지


    팀을 위한 그룹스 설정

    그룹을 공동작업 받은편지함으로 사용
    이 공동작업 기능은 기술 지원 또는 고객 서비스팀에 특히 유용합니다.
    주소: support@your-domain.com

    지원 담당자를 회원으로 추가한 다음 조직 외부의 사용자가 그룹으로 메일을 보낼 수 있도록 할 수 있습니다. 지원 담당자는 고객 메일을 수신하고 그룹의 주제 보기에서 다음을 수행할 수 있습니다.
    • 그룹 회원을 주제에 대한 책임자로 지정
    • 주제를 해결됨으로 표시
    • 주제와 연결된 태그 수정
    • 태그, 해결 상태 또는 할당 받은 사용자에 따라 주제 필터링




    Groups for Business 웹 주소:

    그룹 이메일 주소: support@eojji.net




    문서 주소: https://goo.gl/TIjopH