6

这是我如何创建电子表格:如何使用API​​在新的Google Spreadsheet中创建第一行?

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调用都基于事实,即已经有第一行,插入名称 - 值对(其中名称是我想创建的标题)。 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 2013-01-08 05:03:43

+0

官方文档在这里 - 使用批量请求更新[或创建]多个单元格:https://developers.google.com/google-apps/电子表格/#updating_multiple_cells_with_a_batch_request – jpillora 2013-02-07 22:14:26

回答

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); 
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 2010-12-03 19:01:48

相关问题