6

이것은 스프레드 시트를 만드는 방법입니다.API를 사용하여 새로운 Google 스프레드 시트에서 첫 번째 줄을 만드는 방법은 무엇입니까?

DocsService client= new DocsService ("idea"); 
client.useSsl(); 
client.setOAuthCredentials (oauthParameters, new OAuthHmacSha1Signer()); 

DocumentListEntry newEntry= new com.google.gdata.data.docs.SpreadsheetEntry(); 
newEntry.setTitle (new PlainTextConstruct ("GIdeaDB")); 
DocumentListEntry insertedEntry= client.insert (new URL (
    "https://docs.google.com/feeds/default/private/full/?xoauth_requestor_id="+ userEmail), newEntry); 

이제 첫 번째 줄을 쓰고 싶습니다.

하지만 불행히도 모든 API는 seam을 호출하여 name-value-pairs (여기서 이름은 내가 생성하려는 제목)를 삽입하기 때문에 이미 첫 번째 행이 있다는 사실을 기반으로합니다. http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html#CreatingTableRecords

첫 번째 줄을 어떻게 만들 수 있습니까? 필드 이름을 정의하는 것.

+0

이렇게하면 워크 시트의 크기가 변경됩니다. https://developers.google.com/google-apps/spreadsheets/#modifying_a_worksheets_title_and_size – eddyparkinson

+0

일반 문서는 여기에 있습니다. - 일괄 요청으로 여러 개의 셀을 업데이트하거나 [만들기] : https://developers.google.com/google-apps/ 스프레드 시트/# updating_multiple_cells_with_a_batch_request – jpillora

답변

14

마지막으로 찾았습니다. 셀 단위로 셀을 처리해야합니다.

oauthParameters= new GoogleOAuthParameters(); 
    oauthParameters.setOAuthConsumerKey (CONSUMER_KEY); 
    oauthParameters.setOAuthConsumerSecret (CONSUMER_SECRET); 
    oauthParameters.setOAuthType (OAuthType.TWO_LEGGED_OAUTH); 
    oauthParameters.setScope ("https://spreadsheets.google.com/feeds/"); 

    SpreadsheetService spreadsheetService= new SpreadsheetService ("appname"); 
    spreadsheetService.useSsl(); 
    spreadsheetService.setOAuthCredentials (oauthParameters, 
    new OAuthHmacSha1Signer()); 

    URL feedUrl= new URL (
    "https://spreadsheets.google.com" 
     + "/feeds/spreadsheets/private/full?title=Spreadsheetname&xoauth_requestor_id=" 
     + userEmail); 

    SpreadsheetFeed resultFeed= spreadsheetService.getFeed (feedUrl, 
    SpreadsheetFeed.class); 

    List <SpreadsheetEntry> spreadsheets= resultFeed.getEntries(); 
    SpreadsheetEntry spreadsheetEntry= spreadsheets.get (0); 

    URL worksheetFeedUrl= spreadsheetEntry.getWorksheetFeedUrl(); 
    log.severe (worksheetFeedUrl.toString()); 
    WorksheetFeed worksheetFeed= spreadsheetService.getFeed (
    worksheetFeedUrl, WorksheetFeed.class); 

    List <WorksheetEntry> worksheetEntrys= worksheetFeed.getEntries(); 
    WorksheetEntry worksheetEntry= worksheetEntrys.get (0); 

    // Write header line into Spreadsheet 
    URL cellFeedUrl= worksheetEntry.getCellFeedUrl(); 
    CellFeed cellFeed= spreadsheetService.getFeed (cellFeedUrl, 
    CellFeed.class); 

    CellEntry cellEntry= new CellEntry (1, 1, "headline1"); 
    cellFeed.insert (cellEntry); 
    cellEntry= new CellEntry (1, 2, "headline2"); 
    cellFeed.insert (cellEntry); 
+0

정말 고마워. :) – user381878

+1

많은 도움 !!!!!!!!!! – Dhrupal

+0

헤더를 MOnth-Year로 표시하려고하지만 2014 년 8 월에 값을 넣으면 2014 년 1 월 8 일과 같이 날짜가 바뀝니다. 어떤 해결책? –

1

나는 그것을 시도하지 않은,하지만 "이 테이블을 생성"절에 설명되어있는 것처럼 나에게 보이는 : 그것은에 헤더를 생성처럼

TableEntry tableEntry = new TableEntry(); 

FeedURLFactory factory = FeedURLFactory.getDefault(); 
URL tableFeedUrl = factory.getTableFeedUrl(spreadsheetEntry.getKey()); 

// Specify a basic table: 
tableEntry.setTitle(new PlainTextConstruct("New Table")); 
tableEntry.setWorksheet(new Worksheet("Sheet1")); 
tableEntry.setHeader(new Header(1)); 

// Specify columns in the table, start row, number of rows. 
Data tableData = new Data(); 
tableData.setNumberOfRows(0); 
// Start row index cannot overlap with header row. 
tableData.setStartIndex(2); 
// This table has only one column. 
tableData.addColumn(new Column("A", "Column A")); 

tableEntry.setData(tableData); 
service.insert(tableFeedUrl, tableEntry); 

특히, 일부 tableEntry.setHeader(new Header(1)) 보인다 첫번째 줄. 그런 다음 tableData.setStartIndex(2)은 데이터가 첫 행에 없어야한다고 지정하는 것 같습니다 (헤더이기 때문에). 마지막으로 tableData.addColumn(new Column("A", "Column A"))은 헤더에 레이블이 지정된 열을 추가하는 것으로 보입니다.

+0

안녕하세요. 월요일에해볼거야. 고마워! – JochenJung

+1

Hmm .. no :-(스프레드 시트는 새로운 테이블을 만듭니다. GUI에서는 테이블이 보이지 않지만 Data API를 사용하면 테이블에서 작업 할 수 있습니다. "Google 스프레드 시트를 Google 문서 도구에서보고 싶습니다. 그래서 이것은 옵션이 아닙니다. – JochenJung

+0

GData API는 서버 동기화 데이터에서만 작동하기 때문에 사용자에게 테이블을 표시하지 않고 그냥 만들면됩니다. 메모리. – Kroltan