3

したがって、例は、ドライブ上のすべてのスプレッドシートを取得するスプレッドシートフィードをフェッチする方法を示しています。

query.Uriを設定するための形式は何ですか?entry.SelfUrlまたは次のコードを使用すると、400の不正なリクエストが発生します

SpreadsheetQuery query = new SpreadsheetQuery();
query.Uri = new Uri(string.Format("{0}/{1}", DocumentsListQuery.documentsBaseUri, entry.ResourceId)); //400
// query.Uri = entry.SelfUri.Content; //also a 400

また、フィードURLのさまざまな形式を試しました。特に、1ページのAPIドキュメントで提案されているものを試しました(をに置き換えるkeyと、ResourceId実際には400ではなくnullフィードが返されます)。

https://spreadsheets.google.com/feeds/worksheets/key/private/full

1つのファイルだけをフェッチするにはどうすればよいですか?

代わりに、すべてをフェッチしてクライアント側にクエリを実行する必要があります。

 var feed = SpreadsheetFeedFor(query);
 var spreadsheet = (SpreadsheetEntry)feed.Entries.Single(e => e.SelfUri == resourceUri);
4

1 に答える 1

3

では、ワークシートの集まり以外のスプレッドシートとは何でしょう? 明らかに、スプレッドシートの観点からは何も区別されていません-ファイル名を持つものであり、Docs API でそれを取得します...そう、スプレッドシートを取得するために、特定のスプレッドシートのワークシートを取得するサンプル コードを使用しました (ドライブの ResourceId / キーによる):

        /// <summary>
        /// fetch a worksheet feed for a given spreadsheet
        /// </summary>
        /// <param name="resourceId"></param>
        /// <returns></returns>
        protected WorksheetFeed WorksheetsFor(string resourceId)
        {
            var path = "https://spreadsheets.google.com/feeds/worksheets/{0}/private/full".Substitute(resourceId);
            WorksheetQuery query = new WorksheetQuery(path);
            WorksheetFeed feed = SpreadsheetsService.Query(query);
            return feed;
        }
于 2012-12-05T18:06:58.557 に答える