2017-06-05 44 views
1

一般に、私はテーブルからデータを読み取ることができないという問題があります。 私が持っている問題は本当にシンプルですが、Excelスプレッドシートの例で説明します。APIを使用してGoogleスプレッドシートからデータを抽出するC#

ステータスのテーブルからセルの値を取得します。このセルが「送信されていません」と表示されている場合、またはこの場合セルが空の場合、別のセルから同じ行のデータを取り込み、これらのデータで作業を開始します。 タスクが正常に完了した後、受信したデータが入っているセルにステータス「送信済み」を設定します。ここではすべてがシンプルですが、APIを使用して理解できません。すでにマスタリングされた承認、つまり標準コードを使用してデータをテーブルに書き込むことはできますが、コードを編集することはできません。ここ はコードです:

using Google.Apis.Auth.OAuth2; 
 
using Google.Apis.Sheets.v4; 
 
using Google.Apis.Sheets.v4.Data; 
 
using Google.Apis.Services; 
 
using Google.Apis.Util.Store; 
 
using System; 
 
using System.Collections.Generic; 
 
using System.IO; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Threading; 
 
using System.Threading.Tasks; 
 

 
namespace SheetsQuickstart 
 
{ 
 
    class Program 
 
    { 
 
     // If modifying these scopes, delete your previously saved credentials 
 
     // at ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json 
 
     static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly }; 
 
     static string ApplicationName = "Google Sheets API .NET Quickstart"; 
 

 
     static void Main(string[] args) 
 
     { 
 
      UserCredential credential; 
 

 
      using (var stream = 
 
       new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) 
 
      { 
 
       string credPath = System.Environment.GetFolderPath(
 
        System.Environment.SpecialFolder.Personal); 
 
       credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json"); 
 

 
       credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
 
        GoogleClientSecrets.Load(stream).Secrets, 
 
        Scopes, 
 
        "user", 
 
        CancellationToken.None, 
 
        new FileDataStore(credPath, true)).Result; 
 
       Console.WriteLine("Credential file saved to: " + credPath); 
 
      } 
 

 
      // Create Google Sheets API service. 
 
      var service = new SheetsService(new BaseClientService.Initializer() 
 
       { 
 
        HttpClientInitializer = credential, 
 
        ApplicationName = ApplicationName, 
 
       }); 
 

 
      // Define request parameters. 
 
      String spreadsheetId = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"; 
 
      String range = "Class Data!A2:E"; 
 
      SpreadsheetsResource.ValuesResource.GetRequest request = 
 
        service.Spreadsheets.Values.Get(spreadsheetId, range); 
 

 
      // Prints the names and majors of students in a sample spreadsheet: 
 
      // https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit 
 
      ValueRange response = request.Execute(); 
 
      IList<IList<Object>> values = response.Values; 
 
      if (values != null && values.Count > 0) 
 
      { 
 
       Console.WriteLine("Name, Major"); 
 
       foreach (var row in values) 
 
       { 
 
        // Print columns A and E, which correspond to indices 0 and 4. 
 
        Console.WriteLine("{0}, {1}", row[0], row[4]); 
 
       } 
 
      } 
 
      else 
 
      { 
 
       Console.WriteLine("No data found."); 
 
      } 
 
      Console.Read(); 
 

 

 
     } 
 
    } 
 
}

答えて

1

あなたはこのGoogle Sheets with C#チュートリアルに従うことができます。両方のクライアントライブラリからNuGetパッケージが必要になると述べました。最初のものは、認証する必要がある現在のGoogle .net client libraryです。 2番目は、Googleのスプレッドシートにアクセスするために使用する古いGdata libraryです。このSOの投稿を参照することもできます:Accessing Google Spreadsheets with C# using Google Data API

関連する問題