SpreadsheetEntry.getKey()返回以'spreadsheet%3A'开头的键

时间:2012-08-22 05:24:39

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

我使用Google Spreadsheet API将文档从一个帐户复制到另一个帐户,然后我想返回新创建的电子表格的密钥。

通过检索模板电子表格完成复制,使用SpreadsheetEntry newDoc = new SpreadsheetEntry();创建新的电子表格,然后将新的id设置为模板电子表格newDoc.setId(template.getId());。然后我插入新的电子表格

newDoc = service.insert(new URL("https://docs.google.com/feeds/default/private/full"), newDoc);

我想向调用者返回两件事:链接到新创建的电子表格及其密钥。 我通过newDoc.getSpreadsheetLink().getHref();得到第一个,然后返回https://docs.google.com/a/bridgeworks.nl/spreadsheet/ccc?key=0Asl_Vu_YG4J-dDc5NHpwTFVRZFNiVENnRUxOb21XLVE

然后我致电newDoc.getKey();并返回spreadsheet%3A0Asl_Vu_YG4J-dDc5NHpwTFVRZFNiVENnRUxOb21XLVE

密钥似乎先于spreadsheet%3A。但为什么?我可以安全地删除它并只返回密钥吗?

如果我使用

URL worksheetUrl = urlFactory.getWorksheetFeedUrl("0Asl_Vu_YG4J-dDc5NHpwTFVRZFNiVENnRUxOb21XLVE", "private", "full");

成功但

URL worksheetUrl = urlFactory.getWorksheetFeedUrl("spreadsheet%3A0Asl_Vu_YG4J-dDc5NHpwTFVRZFNiVENnRUxOb21XLVE", "private", "full");

失败

1 个答案:

答案 0 :(得分:1)

Documents List API定义了两种类型的ID:资源ID和无类型资源ID。前者的格式为[type]:[id],而后者只是[id]:

https://developers.google.com/google-apps/documents-list/#terminology_used_in_this_guide

您可以安全地从类型化资源ID中删除[type]部分以获取无类型资源ID。