Google Data API 用の .NET ライブラリを使用して、 Google ドライブ フォルダを横断し、必要なスプレッドシートを検索し、選択したスプレッドシートのデータを変更するタスクがあります。
フォルダーの走査は、Google.GData.Documents.FolderQueryおよびGoogle.GData.Documents名前空間の他のクラスを使用して実行されます。正しいドキュメントが見つかったら、Google.GData.Spreadsheets.Spreadsheetクラスを使用してそれを管理する必要があります。ここで、ドキュメント URL からドキュメント キーを抽出し、すべてのスプレッドシートを反復処理し、スプレッドシート URL を抽出して 2 つのキーを比較することにより、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;
}
これを行う別の、よりエレガントで正しい方法はありますか?