LoginSignup
7
3

More than 5 years have passed since last update.

[C#] Google Drive API v3を使ってGoogle Slidesを取得する

Last updated at Posted at 2018-04-11

概要

Google Drive API v3の日本語記事があまり存在せず泣いた困ったため
備忘録もかねてつらつらと記載します。
この記事ではC#を用いてGoogle Slidesを取得します。

Google Slidesを取得する

ユーザー認証やDrive API serviceを生成する過程はGoogle Drive APIs .NET Quickstartを参照。

リクエストパラメータの定義

FilesResource.ListRequestのインスタンスを作成し、ファイル一覧を取得する際に使われるリクエストパラメータを定義します。
各プロパティはListRequest Class Referenceを参照。

  • PageSize
    1ページに返す最大ファイル数が指定できます。

  • Q
    ファイルの検索結果をフィルタリングするためのクエリ構文を記載できます。
    Google Drive APIでは、フォルダ含め全てのファイル再帰的に取ってきてしまうため、特定のファイルが欲しい場合はクエリ構文で指定する必要があります。
    クエリ構文の記載はGoogle Drive APIs Search for Files and Team Drivesを参考にしました。
    今回は、Google Slidesだけを取得したいので、クエリ構文でMINE Typeを指定しました。
    Google Drive APIsで用意されているGoogle Drive固有のMINE Type一覧はGoogle Drive APIs Supported MINE Typesを参照。

  • Fields
    取得したいファイルのフィールド属性を指定します。
    指定していないフィールドを取得しようとすると、C#ではnullが返ってきます。

Google Slidesをエクスポートする

今回はGoogle Slidesを取得するため、Exportメソッドを用います。
Exportメソッドでは、ダウンロードするファイルのIDとファイル形式をMINE Typeを引数で指定します。
Googleドキュメント形式と変換形式に対応するMINE Type一覧はGoogle Drive APIs Download Filesを参照。

一般的な形式の場合はExportメソッドの代わりにGetメソッドを使ってファイルをダウンロードします。


            // リクエストパラメータの定義
            // service(DriveService)はユーザ認証部分なので割愛
            FilesResource.ListRequest listRequest = DriveService.service.Files.List();
            listRequest.PageSize = 1;

            // Google Slidesのみ取得する
            listRequest.Q = "mimeType = 'application/vnd.google-apps.presentation'";
            listRequest.Fields = "nextPageToken, files(id, name)";

            // ファイル一覧の取得
            IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;

            // 例えば一番最初にとれたファイルをダウンロードする
            var id = files.First().Id;

            // 保存するファイル先を指定する
            string saveTo = /*ファイル先*/;

            // 例えばGoogle SlidesをPDF形式でダウンロードする
            var request = DriveService.service.Files.Export(id, "application/pdf");
            var filest = new System.IO.FileStream(Path.Combine(saveTo,files.First().Name + ".pdf"), System.IO.FileMode.Create, System.IO.FileAccess.Write);
            request.Download(filest);

参考

https://www.daimto.com/download-files-from-google-drive-with-c/
https://developers.google.com/drive/v3/web/manage-downloads
https://www.milk-island.net/translate/ggd/drive/v3/web/manage-downloads.html

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3