使用.NET library for the Google Data API执行任务,遍历Google云端硬盘文件夹,找到所需的电子表格并更改所选电子表格的数据。
使用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;
}
还有另一种更优雅,更正确的方法吗?
答案 0 :(得分:2)
我可以说,不仅没有更好的方法来做到这一点,但即使这种技术也会失败。截至最近(?)对Google Drive API的更改,文档列表与电子表格API检索的相同文档的密钥不兼容。虽然使用由文档列表API返回的密钥构建的电子表格URL会获得SpreadsheetEntry,但对该条目的电子表格操作可能会产生“无效令牌”身份验证异常。
根据您使用的身份验证方式,您的里程可能会有所不同。我使用的是最不推荐的用户凭据方法。