Google Apps Application APIs: Is there a better wa

2019-06-08 05:36发布

There is a task, using the .NET library for the Google Data API, to traverse across Google Drive folders, find required spreadsheets and change data of the selected spreadsheets.

Folders traversing is performed using the Google.GData.Documents.FolderQuery and other classes of the Google.GData.Documents namespace. After a correct document is found is necessary to manage it using the Google.GData.Spreadsheets.Spreadsheet class. Now I find a correspondence between the Google.GData.Documents.DocumentEntry class and the Google.GData.Spreadsheets.Spreadsheet class instances by extracting the document key from the document URL, iterating all spreadsheets, extracting a spreadsheet URL and comparing the two keys. The code looks like

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

Is there another, more elegant and correct, way to do this?

1条回答
Fickle 薄情
2楼-- · 2019-06-08 06:01

As best I can tell, not only is there no better way to do this, but even this technique will fail. As of recent(?) changes to Google Drive API, the keys for the SAME DOCUMENT retrieved by Document List versus Spreadsheets APIs are incompatible. Though using a spreadsheet URL constructed from a key returned by Document List API WILL get you a SpreadsheetEntry, spreadsheet operations on that entry are likely to produce "Invalid Token" Authentication Exceptions.

Your mileage may vary, depending on the authentication style you use. I am using the least recommended User Credentials method.

查看更多
登录 后发表回答