গুগল ডেটা এপিআই ব্যবহার করে সি # দিয়ে গুগল স্প্রেডশিট অ্যাক্সেস করা


104

আমি একক শিট হিসাবে গুগল স্প্রেডশিটে কিছু তথ্য রাখছি। গুগল শংসাপত্র এবং স্প্রেডশিট ঠিকানা সরবরাহ করে .NET থেকে এই তথ্যটি পড়তে পারি এমন কোনও উপায় আছে কি? গুগল ডেটা এপিআই ব্যবহার করে কি এটি সম্ভব? শেষ পর্যন্ত আমার একটি ডেটা টেবেলে গুগল স্প্রেডশিট থেকে তথ্য নেওয়া দরকার। আমি এটা কিভাবে করবো? যদি কেউ এটি চেষ্টা করে থাকে তবে দয়া করে কিছু তথ্য ভাগ করুন।


উত্তর:


176

.NET ব্যবহারকারী গাইড অনুসারে :

.NET ক্লায়েন্ট লাইব্রেরি ডাউনলোড করুন :

এগুলি বিবৃতি ব্যবহার করে যুক্ত করুন:

using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Spreadsheets;

প্রমাণীকরণ:

SpreadsheetsService myService = new SpreadsheetsService("exampleCo-exampleApp-1");
myService.setUserCredentials("jo@gmail.com", "mypassword");

স্প্রেডশিটগুলির একটি তালিকা পান:

SpreadsheetQuery query = new SpreadsheetQuery();
SpreadsheetFeed feed = myService.Query(query);

Console.WriteLine("Your spreadsheets: ");
foreach (SpreadsheetEntry entry in feed.Entries)
{
    Console.WriteLine(entry.Title.Text);
}

আপনি ইতিমধ্যে পুনরুদ্ধার করেছেন এমন একটি স্প্রেডশিট এন্ট্রি দেওয়া, আপনি এই স্প্রেডশিটে সমস্ত কার্যপত্রকের একটি তালিকা নীচে পাবেন:

AtomLink link = entry.Links.FindService(GDataSpreadsheetsNameTable.WorksheetRel, null);

WorksheetQuery query = new WorksheetQuery(link.HRef.ToString());
WorksheetFeed feed = service.Query(query);

foreach (WorksheetEntry worksheet in feed.Entries)
{
    Console.WriteLine(worksheet.Title.Text);
}

এবং একটি সেল ভিত্তিক ফিড পান:

AtomLink cellFeedLink = worksheetentry.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null);

CellQuery query = new CellQuery(cellFeedLink.HRef.ToString());
CellFeed feed = service.Query(query);

Console.WriteLine("Cells in this worksheet:");
foreach (CellEntry curCell in feed.Entries)
{
    Console.WriteLine("Row {0}, column {1}: {2}", curCell.Cell.Row,
        curCell.Cell.Column, curCell.Cell.Value);
}

3
নতুন স্প্রেডশিটস সার্ভিসেস (" exampleCo-exampleApp-1") এর জন্য স্ট্রিং মানটির জন্য আমার কী ব্যবহার করা উচিত ? আমি সেখানে যা রেখেছি তাতে কিছু আসে যায় না? ধন্যবাদ!
ইয়ান ডেভিস

স্প্রেডশিটগুলির একটি তালিকা পান: "স্প্রেডশিটকিউয়ের ক্যোয়ারী = নতুন স্প্রেডশিটকিউরি ();" "স্প্রেডশিটফিড ফিড = মাই সার্ভিস.কিউয়ারি (ক্যোয়ারী) পড়তে হবে;" সম্পাদনা করার চেষ্টা করা হয়েছে পর্যাপ্ত অক্ষর পরিবর্তন হয়নি!
এসকিউএলবিস্কোট

5
ডেভেলপারস.ইউ.জি.গগল- অ্যাপস / স্প্রেডশিটস / অনুমোদন গুরুত্বপূর্ণ: OAuth 1.0 আর সমর্থিত নয় এবং 5 মে, 2015 এ অক্ষম করা হবে your ।
কিকিনেট

1
এই লিঙ্কটি, নীচে @ ওয়েস্টপি থেকে, আমাকে ২০১
জুন

2020-03-03 এর পরে কাজ করবে না যেহেতু লাইব্রেরি ব্যবহৃত গুগল শীট v3 API ক্লাউড.google.com/blog/products/g-suite/… ব্যবহার করে
ওগ্লাস

22

আমি গুগলের। নেট ক্লায়েন্ট লাইব্রেরির চারপাশে একটি সাধারণ মোড়ক লিখেছি , এটি দৃ strongly়-টাইপযুক্ত রেকর্ড ধরণের সাথে একটি সাধারণ ডাটাবেসের মতো ইন্টারফেস প্রকাশ করে। এখানে কিছু নমুনা কোড রয়েছে:

public class Entity {
    public int IntProp { get; set; }
    public string StringProp { get; set; }
}

var e1 = new Entity { IntProp = 2 };
var e2 = new Entity { StringProp = "hello" };
var client = new DatabaseClient("you@gmail.com", "password");
const string dbName = "IntegrationTests";
Console.WriteLine("Opening or creating database");
db = client.GetDatabase(dbName) ?? client.CreateDatabase(dbName); // databases are spreadsheets
const string tableName = "IntegrationTests";
Console.WriteLine("Opening or creating table");
table = db.GetTable<Entity>(tableName) ?? db.CreateTable<Entity>(tableName); // tables are worksheets
table.DeleteAll();
table.Add(e1);
table.Add(e2);
var r1 = table.Get(1);

এখানে একটি লিনকিউ সরবরাহকারীও রয়েছে যা গুগলের কাঠামোগত ক্যোয়ারী অপারেটরগুলিতে অনুবাদ করে :

var q = from r in table.AsQueryable()
        where r.IntProp > -1000 && r.StringProp == "hello"
        orderby r.IntProp
        select r;

@ কিকিনেট আপনার অর্থ কি? । শেষ সংস্করণ আমি Google.GData দেখতে * 2.2.0 হয় nuget.org/packages/Google.GData.Documents
মরিসিও শেফার


@ কুইকিনেট যখন গুগল তাদের। নেট লাইব্রেরি আপডেট করে তখন আমাকে জানতে দিন। তবে আমার মনে হয় গুগল.জিডাটা। * ২.২.০ ইতিমধ্যে API v3 ব্যবহার করে।
মরিসিও শেফার

developers.google.com/google-apps/spreadsheets/authorize অ্যাপস / স্প্রেডশিটস / অনুমোদন গুরুত্বপূর্ণ: OAuth 1.0 আর সমর্থিত নয় এবং 5 মে, 2015 এ অক্ষম করা হবে your আপনার অ্যাপ্লিকেশন যদি OAuth 1.0 ব্যবহার করে তবে আপনাকে অবশ্যই OAuth 2.0 এ মাইগ্রেট করতে হবে বা আপনার অ্যাপ্লিকেশনটি কাজ বন্ধ করবে ।
কিকিনেট

17

(জুন-নভেম্বর 2016) প্রশ্ন এবং এর উত্তরগুলি এখন সেকেলে: 1) জিডিটা এপিআইগুলি গুগল এপিআইয়ের পূর্ববর্তী প্রজন্ম। যদিও সব GData API গুলি অবচিত হয়েছে, সব সর্বশেষ Google API এর কি না ব্যবহার Google ডেটা প্রোটোকল ; এবং 2) একটি নতুন গুগল পত্রক API v4 আছে (জিডিটাও নয়)।

এখান থেকে এগিয়ে যাওয়ার জন্য আপনাকে .NET এর জন্য গুগল এপিআইএস ক্লায়েন্ট লাইব্রেরি নেওয়া দরকার এবং সর্বশেষ শিটস এপিআই ব্যবহার করা উচিত যা আগের কোনও এপিআইর চেয়ে অনেক বেশি শক্তিশালী এবং নমনীয়। আপনাকে শুরু করতে এখানে সহায়তার জন্য একটি সি # কোড নমুনাপত্রক এপিআই এবং। নেট গুগল এপিআইএস ক্লায়েন্ট লাইব্রেরি বিকাশকারীদের গাইডের জন্য .NET রেফারেন্স ডক্সও পরীক্ষা করে দেখুন ।

আপনি যদি পাইথনের প্রতি অ্যালার্জি না পেয়ে থাকেন (যদি আপনি থাকেন তবে এটি কেবল সিউডোকোডের ভান করুন;)), আপনি যে এপিআই শিখতে পারেন তার ব্যবহারের জন্য আরও কিছু "রিয়েল-ওয়ার্ল্ড" উদাহরণ সহ আরও কয়েকটি ভিডিও তৈরি করেছি এবং ইচ্ছা করলে সি # তে মাইগ্রেট করতে পারি :


এই সরঞ্জামগুলি মাইক্রোসফ্ট এক্সেল ফাইলগুলি অ্যাক্সেসের জন্যও ব্যবহার করা যেতে পারে?
afr0

1
দুর্ভাগ্যক্রমে, মাইক্রোসফ্ট এবং গুগল উভয়ই প্রতিযোগিতামূলক পণ্য তৈরি করছে যা একটি সাধারণ মান মেনে চলে না, তাই আপনাকে এক্সেল ফাইলগুলিতে অ্যাক্সেস করার জন্য নিজের সরঞ্জামাদি খুঁজে পেতে হবে। আপনি যদি পাইথন বিকাশকারী হন তবে পাইথন-excel.org দেখুন । অন্যান্য ভাষার জন্য, আপনাকে তাদের নিজ নিজ সম্প্রদায়গুলি অনুসন্ধান করতে হবে। বিকল্পভাবে, আপনি গুগলে এক্সেল ফাইলগুলি (ড্রাইভ এপিআই ব্যবহার করে) আমদানি করতে পারেন, তারপরে আপনার পছন্দসই ক্রিয়াকলাপ সম্পাদন করতে শীটগুলি API ব্যবহার করুন। গুগল এপিআইগুলি বিভিন্ন ধরণের ভাষাগুলি সমর্থন করে ... দেখুন ডেভেলপারস
google.com/api-client-library

3

আপনি বিভিন্ন উপায়ে যা জিজ্ঞাসা করছেন তা করতে পারেন:

  1. একটি তালিকাফিড আনতে গুগলের স্প্রেডশিট সি # লাইব্রেরি (টাকোমান 667 এর উত্তর হিসাবে) ব্যবহার করে যা সারিগুলির একটি তালিকা (গুগল পার্লেন্সে তালিকার তালিকা) ফিরিয়ে আনতে পারে যার প্রত্যেকটির নাম-মান জুটির একটি তালিকা রয়েছে। গুগল স্প্রেডশিট এপিআই ( http://code.google.com/apis/spreadsheets/code.html ) ডকুমেন্টেশনে আপনার শুরু করার জন্য পর্যাপ্ত তথ্য রয়েছে।

  2. গুগল ভিজ্যুয়ালাইজেশন এপিআই ব্যবহার করে যা আপনাকে প্রয়োজনীয় সারি / কলামগুলি আনতে আপনাকে আরও পরিশীলিত (প্রায় এসকিউএলের মতো) কোয়েরি জমা দিতে দেয়।

  3. স্প্রেডশিট সামগ্রীগুলি এটম ফিড হিসাবে ফিরিয়ে দেওয়া হয়েছে যাতে আপনি কোনও তালিকার ফিডের সামগ্রীগুলি বের করতে এক্সপথ বা স্যাক্স পার্সিং ব্যবহার করতে পারেন। Http://gqlx.twyst.co.za এ (জাভা এবং জাভাস্ক্রিপ্টে কেবল আমি ভীত হলেও) এটি করার একটি উদাহরণ রয়েছে ।


2

আমি নিশ্চিত যে এর জন্য গুগল কোডে কিছু সি # এসডিকে / টুলকিট থাকবে। আমি দেখেছি এই এক , কিন্তু অন্যরা যাতে কাছাকাছি একটি ব্রাউজ থাকার এটা মূল্য হতে পারে।


2

http://code.google.com/apis/gdata/articles/dotnet_client_lib.html

এই কমান্ডের সাহায্যে আপনি শুরু করতে হবে। আমি ইদানীং এটির সাথে খেলিনি তবে আমি কিছুক্ষণ আগে একটি খুব পুরানো সংস্করণ ডাউনলোড করেছি এবং এটি বেশ দৃ solid় বলে মনে হয়েছিল। এটি একটি ভিজ্যুয়াল স্টুডিও ২০০ 2008 এ আপডেট করা হয়েছে পাশাপাশি ডক্সগুলিও পরীক্ষা করে দেখুন!



2

@ কেলির সবচেয়ে উর্ধ্বমুখী উত্তরটি এখন আর ওয়েল নেই @ উইস্কপি বলেছে says তবে 2020-03-03 এর পরে এটি লাইব্রেরি ব্যবহারের কারণে কার্যকর হবে না Google Sheets v3 API

গুগল শিটস ভি 3 এপিআই 320, 2020 এ বন্ধ হয়ে যাবে

https://developers.google.com/sheets/api/v3

গুগল দ্বারা এটি 2019-09-10 ঘোষণা করা হয়েছিল:

https://cloud.google.com/blog/products/g-suite/migrate-your-apps-use-latest-sheets-api

এর জন্য নতুন কোড নমুনা Google Sheets v4 API:

যাও

https://developers.google.com/sheets/api/quickstart/dotnet

এবং উত্পন্ন credentials.json। তারপরে ইনস্টল করুনGoogle.Apis.Sheets.v4 নুগেট করুন এবং নিম্নলিখিত নমুনার চেষ্টা করুন:

নোট করুন যে আমি Unable to parse range: Class Data!A2:Eউদাহরণ কোডটি দিয়ে আমার ত্রুটিটি পেয়েছি তবে আমার স্প্রেডশিটটিতে। Sheet1!A2:Eআমার শিটটির নামকরণ হওয়ার পরে থেকে কাজ করা পরিবর্তন করা হচ্ছে । শুধুমাত্র সঙ্গে কাজ A2:E

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.Threading;

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("credentials.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "token.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();
        }
    }
}

ক্লায়েন্টের আইডি / গোপনীয়তা এবং স্কোপগুলি নির্দিষ্ট না করে আমি কীভাবে পারি? আমি ইতিমধ্যে OAuth প্রবাহটি সম্পন্ন করেছি এবং একটি অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন পেয়েছি (অফলাইন মোডটি ভাবেন) এবং আমি এই অতিরিক্ত ক্র্যাপের কোনওটি চাই না। আমার কাছে ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেটে অ্যাক্সেস নেই কারণ তারা ওআউথ রিলে সার্ভারে রয়েছে যা আমার ব্যাকগ্রাউন্ড পরিষেবাদিতে অ্যাক্সেসও করে না।
ব্লেক নিন্মিজস্কি

@ ব্লাকনিমিজেস্কি বাকী এপিআই সরাসরি ব্যবহার করুন, লিঙ্ক করুন: ডেভেলপারসগ্রাফিকেশন
শীটস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.