【问题标题】:How do I create the first line in a new Google Spreadsheet using the API?如何使用 API 在新的 Google 电子表格中创建第一行?
【发布时间】:2010-12-03 18:26:06
【问题描述】:

这就是我创建电子表格的方式:

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

有什么想法可以创建第一行吗?定义字段名称的那个。

【问题讨论】:

标签: java gwt google-sheets google-docs-api google-spreadsheet-api


【解决方案1】:

终于找到了。您必须逐个单元格地进行:

  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);

【讨论】:

  • 谢谢它真的很有帮助:)
  • 我想将标题显示为 MOnth-Year,但是当我将值设置为 2014 年 8 月时,它会将其转换为 2014 年 1 月 8 日这样的日期。有什么解决办法吗?
【解决方案2】:

我没有尝试过,但它看起来就像“创建表”部分中描述的那样:

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")) 似乎添加了一个将在标题中标记的列。

【讨论】:

  • 嘿,这看起来很有希望!周一去试试。谢谢!
  • Hmm .. no :-( 它说“电子表格创建了一个新表。该表在 GUI 中不可见,但您可以使用 Data API 对其进行操作。”我也想请参阅 Google Docs 中的电子表格,所以这不是选项
  • 它所指的“GUI”不是应用程序 GUI 吗?因为 GData API 只对服务器同步的数据进行操作。这只是意味着它不会向用户显示表,只是在内存中创建它。
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2015-08-09
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多