Google Apps应用程序API:有没有更好的方法来查找Documents List API Document和Spreadsheets API Spreadsheet之间的对应关系?

时间:2012-06-28 10:53:08

标签: visual-c++ google-api google-apps google-spreadsheet-api

使用.NET library for the Google Data API执行任务,遍历Google云端硬盘文件夹,找到所需的电子表格并更改所选电子表格的数据。

使用Google.GData.Documents.FolderQueryGoogle.GData.Documents命名空间的其他类来执行文件遍历。找到正确的文档后,需要使用Google.GData.Spreadsheets.Spreadsheet类来管理它。现在,我通过从文档URL中提取文档键,迭代所有电子表格,提取电子表格URL并比较两个键,找到Google.GData.Documents.DocumentEntry类和Google.GData.Spreadsheets.Spreadsheet类实例之间的对应关系。代码看起来像

private string GetKey(string url) {
  string res = null;
  Match match = Regex.Match(url, @"\?key=([A-Za-z0-9]+)");
  if (match.Success) {
    res = match.Groups[1].Value;
  }
  return res;
}

private SpreadsheetEntry GetSpreadSheetForDocument(SpreadsheetsService serviceSS, DocumentEntry entrySS) {
  SpreadsheetEntry res = null;
  string strSSKey = GetKey(entrySS.AlternateUri.Content);
  Google.GData.Spreadsheets.SpreadsheetQuery query = new Google.GData.Spreadsheets.SpreadsheetQuery();
  SpreadsheetFeed feed = serviceSS.Query(query);
  foreach (SpreadsheetEntry entry in feed.Entries) {
    if (GetKey(entry.AlternateUri.Content) == strSSKey) {
      res = entry;
      break;
    }
  }
  return res;
}

还有另一种更优雅,更正确的方法吗?

1 个答案:

答案 0 :(得分:2)

我可以说,不仅没有更好的方法来做到这一点,但即使这种技术也会失败。截至最近(?)对Google Drive API的更改,文档列表与电子表格API检索的相同文档的密钥不兼容。虽然使用由文档列表API返回的密钥构建的电子表格URL会获得SpreadsheetEntry,但对该条目的电子表格操作可能会产生“无效令牌”身份验证异常。

根据您使用的身份验证方式,您的里程可能会有所不同。我使用的是最不推荐的用户凭据方法。