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 관련글 쓰기

댓글을 달아 주세요

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