تبدیل اطلاعات Google Spreadsheet به فایل CSV

شرکت گوگل به تازگی نرم افزار جدیدی با نام Google Spreadsheet یا صفحه گسترده گوگل ارائه کرده که از لحاظ توانایی و قابلیت ها قابل رقابت با نرم افزار Excel مایکروسافت است. اما هنوز امکانات کمتری در اختیار کاربران قرا می دهد. ولی این امکان را به کاربران می دهد که بتوانند در مکان های مختلف به طور همزمان روی یک فایل گسترده کار کنند. در این مقاله نحوه تبدیل Google Spreadsheet به فایل CSV را آموزش می دهیم.

تبدیل اطلاعات  Google Spreadsheet به فایل CSV

این نمونه برنامه به کاربران اجازه می دهد تا به Google spreadsheet متصل شده و آنها را به CSV تبدیل کنند.

مقدمه

ممکن است در شرکتی لازم باشد داده های Google Analytics را در یک سند مانند صفحه گسترده جمع آوری کرده و بخواهند آنها را به فرمت داده ای CSV تبدیل کنند. بنابراین در این مقاله یک console application با قابلیت پیکربندی برای این منظور ایجاد کرده ایم.

این ابزار بر اساس تنظیمات پیکربندی شده به Google Docs متصل شده و داده ها را از سلولهای spreadsheet واکشی می کند سپس آنها را به فایل CSV تبدیل می کند.

پیش زمینه

اولین چیزی که لازم است احراز هویت Google Docs می باشد. روش های متعددی برای بدست آوردن آن وجود دارد، ما در اینجا از service account برای احراز هویت استفاده کرده ایم. لینک زیر برای پیکربندی service account می باشد:

https://developers.google.com/identity/protocols/OAuth2ServiceAccount

شما باید یک service account ایجاد کرده و یک کلید Json  دریافت کنید که اجازه احراز هویت را به شما می دهد. هر حساب کاربری Google service یک email id منحصر به فرد دارد که این اطمینان را به شما می دهد که با این ایمیل اجازه دارید به spreadsheet ای که می خواهید دسترسی داشته باشید. به طور مختصر، با این ایمیل فقط می توانید spreadsheet را به اشتراک بگذارید.

استفاده از کد:

برای ایجاد اپلیکیشنی که قابلیت پیکربندی داشته باشد باید از این بخش handler نوشته شده که در زیر امده استفاده کنید. این اپلیکیشن اطلاعات  spreadsheet، sheet و cell را از Google docs خوانده و جمع آوری می کند.

<googleSpreadsheetSection>
    <googleSpreadsheets>
      <googleSpreadSheet name="Your Analytics" 
worksheetName="First" useAbsoluteRange="false" 
	range="A1:B11" startRow="0" endRow="0" 
	startColumn="0" endColumn="0" 
	outputFileName="file_one.csv"/>
      <googleSpreadSheet name="My Analytics" 
worksheetName="First" useAbsoluteRange="false" 
	range="A1:B11" startRow="0" endRow="0" 
	startColumn="0" endColumn="0" 
	outputFileName="file_two.csv"/>
    </googleSpreadsheets>
  </googleSpreadsheetSection>

 تنظیمات کمی در برنامه باید انجام داد که بتوان رفتار اپلیکیشن را کنترل کرد. در زیر تنظیماتی که برای پیکربندی اپلیکیشن نیاز دارید وجود دارد:

<appSettings>
   <add key="ApplicationName" value="AccessGoogleDriveDocs" />
   <add key="AppClientName" value=" AcessSpreadsheets" />
   <add key="JsonKeyFilePath" value="D:\Google\Key\AccessGoogleDocs.json" />
   <add key="ApplicationLogFilePath" value="D:\Google\Logs\ApplicationLog.txt" />
   <add key="CSVFolderPath" value="D:\Google\CSV" />
   <add key="NewLineCharacter" value="\n" />
   <add key="ColumnSeparator" value="," />
   <add key="EnableConsoleLogging" value="true" />
   <add key="UseFixedFileNames" value="false" />
 </appSettings>

یک توضیح مختصر از تنظیمات مهم در زیر آمده است:

ApplicationName/AppClientName: هر نامی که بخواهید می توانید قرار دهید.

JsonKeyFilePath: در زمان ایجاد یک کلید تحت Google service account ، این قسمت همان مسیر فایلی است که شما آن را دانلود کرده اید.

NewLineCharacter: خط کاراکتر جدیدی است که در فایل CSV استفاده می شود.

ColumnSeparator: (جدا کننده ستون ها)، این هم برای فایل CSV استفاده می شود.

UseFixedFileName: زمانی که به True تنظیم شود، اپلیکیشن از نام تعریف شده در بخش handler استفاده می کند و در غیر این صورت نامی که به صورت خودکار ایجاد شده استفاده می شود.

CSVFolderPath: مسیری است که فایل های CSV در آن تولید خواهند شد.

مدیریت اتصال به Google Docs توسط کلاس GoogleSpreadsheetConnection  انجام می شود.

public GoogleSpreadsheetConnection(string applicationName, string filePath, string clientName)
{
  SpreadsheetConnection = new SpreadsheetsService(applicationName);
  SpreadsheetConnection.RequestFactory = AuthorizationHelper.GetRequestFactoryFromJson
	(filePath, clientName);
}

این کلاس یک اتصال برای Google Spreadsheet Service با استفاده از Google service account ایجاد می کند و خود را با استفاده از اعتبارهای فایل کلیدی JSON اعتبار سنجی می کند.یک نمونه RequestFactory  با استفاده از کلاس AuthorizationHelper  ایجاد شده و به SpreadsheetService اختصاص یافته است.

public static GDataRequestFactory GetRequestFactoryFromJson(string filePath, string clientName)
{
   var jsonconfig = Newtonsoft.Json.JsonConvert.DeserializeObject
   				<authorizationinfo>(File.ReadAllText(filePath));
  var credential = new ServiceAccountCredential
  (new ServiceAccountCredential.Initializer(jsonconfig.ClientEmail)
            {
                Scopes = new[] 
                {"https://spreadsheets.google.com/feeds", 
                "https://docs.google.com/feeds" }
            }.FromPrivateKey(jsonconfig.PrivateKey));

            credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Wait();
            var requestFactory = new GDataRequestFactory(clientName);
            requestFactory.CustomHeaders.Add(string.Format
            	("Authorization: Bearer {0}", credential.Token.AccessToken));
            return requestFactory;
        }

نکته مهم: به یاد داشته باشید زمانی که یک service account ایجاد می کنید، یک ایمیل id برای service account دریافت خواهید کرد، حتما مطمئن شوید که این email/Account حق دسترسی به  Google spreadsheet را داشته باشد.

آموزش سی شارپ

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب