Shinnara's Blog
Talking with Shinnara :: NaraTalk.com

사용자 삽입 이미지
Google 은 Google Code 를 통해 Google 의 여러 서비스에 접근할 수 있는 API 를 제공하고 있습니다. 오늘은 이중에서 SpreadSheet 의 내용을 얻어 오는 방법을 간략하게 소개합니다. 자세한 내용은 Google Spreadsheets Data API Developer's Guide: Java 를 참고하시면 됩니다. 이때 Java Library 가 필요하며 여기서 다운받으실 수 있습니다.

먼저 서비스를 만들고 로그인 정보를 입력합니다.


            SpreadsheetService service = new SpreadsheetService("Naratalk-SpreadSheet-1");
            service.setUserCredentials(<사용자아이디>, <패스워드>);


서비스 이름은 아직까지 별로 중요하지는 않은것 같습니다. 무엇을 입력해도 상관없더군요. (이부분은 자세한 정보 필요). 그리고 사용자 아이디와 패스워드를 입력하는데 사용자 아이디는 gmail 계정 아이디가 아니라 전체 이메일 주소를 모두 입력하셔야 합니다. 만약 Google Apps 등을 이용해서 자신만의 도메인을 쓰고 있다면 그 이메일 전체를 입력하시면 됩니다.


            URL metafeedUrl = new URL("http://spreadsheets.google.com/feeds/spreadsheets/private/full");
            SpreadsheetFeed feed = service.getFeed(metafeedUrl, SpreadsheetFeed.class);
            List<SpreadsheetEntry> spreadsheets = feed.getEntries();


서비스 URL 입니다. 별로 고칠 부분은 없어보입니다.  feed.getEntries() 를 통해 등록되어 있는 모든 SpreadSheet 의 Entry 를 List 로 반환합니다. 이제 이 List 를 차례로 보면서 해당 내용을 확인해봅니다.

            for (int i = 0; i < spreadsheets.size(); i++) {
              System.out.println("Entry>>");
              SpreadsheetEntry entry = spreadsheets.get(i);
              System.out.println("\t" + entry.getTitle().getPlainText());
            }


 전체적인 구조는 SpreadSheetEntry -> WorksheetEntry -> CellEntry 의 형태를 가지며, 동일한 방법에 의해 접근이 가능합니다.  자세한 내용은 API 문서를 참고하시면 됩니다.

전체 프로그램 소스는 아래와 같습니다.

import com.google.gdata.client.spreadsheet.*;
import java.net.URL;
import com.google.gdata.data.spreadsheet.*;
import java.util.*;

public class GdataTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        try{
            SpreadsheetService service = new SpreadsheetService("Naratalk-SpreadSheet-1");
            service.setUserCredentials("", "");
           
            URL metafeedUrl = new       URL("http://spreadsheets.google.com/feeds/spreadsheets/private/full");
            SpreadsheetFeed feed = service.getFeed(metafeedUrl, SpreadsheetFeed.class);
            List<SpreadsheetEntry> spreadsheets = feed.getEntries();
            for (int i = 0; i < spreadsheets.size(); i++) {
              System.out.println("Entry>>");
              SpreadsheetEntry entry = spreadsheets.get(i);
              System.out.println("\t" + entry.getTitle().getPlainText());
             
              List<WorksheetEntry> worksheets = entry.getWorksheets();
              for(int k=0;k< worksheets.size();k++)
              {
                  WorksheetEntry worksheet = worksheets.get(k);
                  System.out.println("\t\t"+ worksheet.getTitle().getPlainText());
                 
                  URL cellFeedUrl = worksheet.getCellFeedUrl();
                  CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class);
                  for (CellEntry cell : cellFeed.getEntries()) {
                    System.out.println(cell.getTitle().getPlainText());
                    String shortId = cell.getId().substring(cell.getId().lastIndexOf('/') + 1);
                    System.out.println(" -- Cell(" + shortId + "/" + cell.getTitle().getPlainText()
                        + ") formula(" + cell.getCell().getInputValue() + ") numeric("
                        + cell.getCell().getNumericValue() + ") value("
                        + cell.getCell().getValue() + ")");
                  }
              }
              
            }
           
        }catch(Exception e){
            e.printStackTrace();
        }
    }

}

0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/178 관련글 쓰기

댓글을 달아 주세요


Google Apps 를 이용해서 저희 가족만의 이메일과 오피스,캘린더를 사용하려 한다는 글을 썼었는데요, 이제 어느 정도 셋팅이 되어 가는 것 같습니다. 도메인 서버쪽도 대충 해결이 되었고, 메일이라든가, 시작 페이지등도 제대로 동작합니다. 오늘이 10월 1일이라 금전출납부를 새로 시작하기에 아주 좋은 시기였습니다. 그래서 문서를 하나 만들고, 작성을 해보았습니다.

처음에 구글에서 온라인 Spreadsheet 를 만들었을 때, 그 초라함에 많은 실망을 했었는데, 오늘 보니 꽤 좋아졌더군요. 꽤나 많은 기능을 제공하고 있습니다. 뭐, 처음부터 MS의 Excel 과 같은 기능을 원한것은 아니었기때문에, 현재 구글 Spreadsheet 이 제공하는 것만으로도 기본적인 욕구는 충족이 되고 있습니다. 수입과 지출을 입력하면 자동으로 합계를 나타내줄 수 만 있으면 되니까요. 거기에 아내와 공유하여 아내와 쉽게 공동 작업을 할 수 있습니다.

다음은 오늘의 씀씀이를 기록한 구글 Spreadsheet 의 모습입니다. 몇가지 내용은 사생활 보호 차원에서 가렸구요. 오늘은 돈을 좀 많이 썼네요.. 밀린 공과금을 내다보니....

사용자 삽입 이미지

좀더 여러 기능에 대해 알아봐야 하겠지만, 일단은 합격점을 주고 싶습니다. 물론 업무용으로 사용하기에는 아직 많이 부족하지만요.


0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/167 관련글 쓰기

댓글을 달아 주세요


 
사용자 삽입 이미지
쓰고 있던 도메인에 대해 단순히 웹 포워딩만을 이용하다가 이번에 zoneEdit.com 으로 네임서버를 옮기면서 할 수 있는 일들이 많아졌습니다. 그 중에 하나가 Google Apps 를 사용할 수 있는 것입니다.

 Google Apps를 선택하게 된 계기는 우리 가족들이 공통의 이메일 계정( 도메인이 같은)을 갖었으면 하는 것이고, 그 도메인이 우리 가족에게 특별한 것이면 더 좋겠다 싶어서였습니다. 저는 주로  Gmail을, 아내는 네이버 메일을 쓰고 있었는데, 이 참에 우리만의 도메인으로 이메일을 꾸미게 되었습니다.

 물론 Google Apps 가 아니더라도 자신의 도메인으로 이메일을 설정할 수 있는 방법은 여러가지가 있습니다. 호스팅 업체가 기본적으로 메일을 제공해주기도 하고, 자신이 직접 서버를 돌릴 수 도 있으니까요. 저도 나중에 컨텐츠가 많아지고, 여력이 된다면 독립 서버를 하나 돌려볼까 생각 중입니다. 그때까지 서버 관리와 관련된 많은 내공을 쌓아야겠지요.

 Google Apps 는 도메인만 있으면 추가적인 비용없이 멋진 이메일 시스템을 꾸밀 수 있습니다. 거기에 Google 이 제공하는 각종 다른 서비스(Calendar, Docs 등등)를 함께 이용할 수 도 있습니다. 얼마전부터 아내와 함께 가계부를 온라인으로 관리할까 하고 있었는데, 이번 기회에 google spread sheet 을 한번 활용해 볼까합니다. 가장 좋은 건 웹 어플리케이션을 별도로 만드는것이겠지만, 그럴 시간적 여유가 별로 없네요. 일단은 Google 이 제공하는 기능으로 단순한 출납만을 기록해 보려고 합니다.

 Google Apps 의 신청 절차는 무척 간단합니다. 몇가지 내용만 입력하면 바로 서비스 준비상태가 됩니다. 다만 도메인이 본인의 것인지 소유권을 확인하는 절차가 있습니다. 두가지 방법 중 하나를 선택할 수 있는데요, 첫번째가 특정 html 파일을 도메인의 웹 루트 디렉토리에 올려놓는 것이고, 두번째는 CNAME 을 설정하는 것입니다. 저의 경우는 두번째로 도메인 확인을 신청한 상태입니다.

사용자 삽입 이미지

위의 이미지는 현재 도메인 확인 작업 중인 모습입니다. 어서 확인이 되어서 활성화가 되었으면 좋겠네요. 그래야 내일 (10월 1일)부터라도 가계부 기록을 할 수 있을테니까요. ^^

update::

이글을 작성하고 확인해보니 도메인 확인 작업이 끝났네요. 다음과 같이 변합니다~~

사용자 삽입 이미지

이제 아내의 이메일 계정을 만들고, 가계부로 쓸 Sheet 도 만들어야 겠습니다. 캘린더도 있으니 서로의 일정을 공유해보는 것도 좋을  것 같습니다.


0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/163 관련글 쓰기

댓글을 달아 주세요

1 
다...... (264)
Computer/Programming (106)
Links (14)
책 읽는 즐거움 (7)
끄적임 (66)
즐거운 과학 나라 (7)
일본 (5)
Study (4)