1

有一个任务,使用Google Data API 的 .NET 库来遍历 Google Drive 文件夹,查找所需的电子表格并更改所选电子表格的数据。

使用Google.GData.Documents.FolderQuery和Google.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;
}

是否有另一种更优雅和正确的方法来做到这一点?

4

1 回答 1

2

据我所知,不仅没有更好的方法可以做到这一点,而且即使这种技术也会失败。由于最近(?)对 Google Drive API 的更改,Document List 与 Spreadsheets API 检索到的 SAME DOCUMENT 的密钥不兼容。尽管使用由 Document List API 返回的键构造的电子表格 URL 将获得一个 SpreadsheetEntry,但对该条目的电子表格操作可能会产生“无效令牌”身份验证异常。

您的里程可能会有所不同,具体取决于您使用的身份验证方式。我正在使用最不推荐的用户凭据方法。

于 2013-03-06T20:54:26.087 回答