C#でスプレッドシートのデータを取得してみた

## 準備
### Google Cloudへログイン
![スクリーンショット 2022-06-28 5.52.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/bec5df8e-04a9-20c3-c804-9dde25d2f183.png)
### API登録
「APIとサービスの有効化」をクリックする。
![スクリーンショット 2022-06-28 5.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/0169ecac-4cc5-8018-03b2-946b5a091ba0.png)
「google sheets api」を検索する。
![スクリーンショット 2022-06-28 6.02.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/3c9a9c77-2d9b-17a5-3457-5edf5252f7d5.png)
「Google　Sheets　API」をクリックする。
![スクリーンショット 2022-06-28 6.03.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/d0d6f4df-cbee-d2d9-9f6b-03e699fc3cdf.png)
APIを有効にする。
![スクリーンショット 2022-06-28 6.05.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/d6e5c05b-b52d-c8c0-170d-7fc4fc15e1a1.png)
「OAuth同意画面」をクリックし、「作成」をクリックする。
![スクリーンショット 2022-06-28 6.11.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/827cc4f7-dc01-5885-bfca-f723164582b3.png)
アプリ情報を設定し、保存する。
![スクリーンショット 2022-06-28 6.26.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/fc64b739-e84e-27d6-66d4-ec52f8d0b4e9.png)
「認証情報を作成」をクリックし、「OAuthクライアントID」をクリックする。
![スクリーンショット 2022-06-28 6.38.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/13bd4e05-236f-acce-bf1f-a51478329daf.png)
赤枠部分をクリックし、OAuthクライアント(JSON)をダウンロードする。
![スクリーンショット 2022-06-28 6.50.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/e55640ac-7f7f-e4c2-7d24-3c308045afa4.png)

### ライブラリ追加
Visual StudioでNugetパッケージマネージャを開き、「Google.Apis.Sheets.v4」をインストールする。
![スクリーンショット 2022-07-12 7.38.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/0b4e7049-49f2-f856-015e-5030c9582238.png)

## スプレッドシートからデータを取得する
### OAuthクライアント
先程ダウンロードしたOAuthクライアント(JSON)をプロジェクトに追加する。
![スクリーンショット 2022-07-12 7.43.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/d7ccb391-507c-bc37-2149-41bf2bf2dd3c.png)

### 取得するデータ
都道府県が入力されたデータを取得します。
![スクリーンショット 2022-07-13 7.11.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/8544f3db-88eb-743f-8397-9971c14ded0e.png)

### サンプルコード
``` Program.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Sheets.v4;
using Google.Apis.Util.Store;
using Microsoft.Extensions.Configuration;

namespace SampleGoogleSheetApiConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var configuration = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();
            var settings = configuration.GetSection("ApiSettings");
            UserCredential credential;
            using (var stream = new FileStream(
                "client_secret.json",
                FileMode.Open,
                FileAccess.Read))
            {
                string credPath = AppDomain.CurrentDomain.BaseDirectory;
                credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json");

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    new[] { SheetsService.Scope.Spreadsheets },
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)
                    ).Result;
            }
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = settings["ApplicationName"],
            });
            var request = service.Spreadsheets.Values.Get(settings["SpreadsheetId"], settings["Range"]);
            var values = request.Execute().Values.ToList();
            values.ForEach(value => { Console.WriteLine(value.FirstOrDefault()); });
        }
    }
}
```
``` appsettings.json
{
    "ApiSettings": {
        "ApplicationName": "xxxxx",
        "SpreadsheetId": "xxxxx",
        "Range": "Sheet1!A1:A47"
    }
}
```

### 実行結果
![スクリーンショット 2022-07-13 7.15.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481749/545a1c33-3f89-67ae-f060-3e3103e1fd48.png)