1

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

これを行う別の、よりエレガントで正しい方法はありますか?

4

1 に答える 1

2

私が知る限り、これを行うためのより良い方法がないだけでなく、このテクニックでさえ失敗します。GoogleドライブAPIに対する最近の(?)変更の時点で、ドキュメントリストとスプレッドシートAPIによって取得された同じドキュメントのキーには互換性がありません。Document List APIによって返されたキーから構築されたスプレッドシートURLを使用すると、SpreadsheetEntryが取得されますが、そのエントリに対するスプレッドシート操作では、「無効なトークン」認証例外が生成される可能性があります。

使用する認証スタイルによって、マイレージが異なる場合があります。最も推奨されていないユーザー資格情報の方法を使用しています。

于 2013-03-06T20:54:26.087 に答える