반응형

 

이것저것 무언가를 해보고 싶어서,

무엇을 해볼까 고민하던 와중에, 크롤링에 대해 알게 되었다.

 

크롤링이라는게 수시로 웹 페이지를 확인하여, 새로운 정보를 얻어 가는 것을 말한다.

예를 들어서, 블로그를 하는 내가 포털사이트(구글/네이버)에 sitemap을 등록하면

해당 포털사이트에서 수시로 우리가 등록한 sitemap을 확인할 것이다.

그리고 sitemap에 새롭게 추가되어진 정보를 포털사이트에 노출되게 해준다.

 

여담이 길었다. 크롤링에 대한 나만의 작은 프로젝트가 어느정도 마무리가 된다면 포스팅 해봐야겠다.

그래서 나도 어느 페이지를 수시로 확인하면서, 데이터를 확인하고 저장하는 프로세스를 거치려고 한다.

그때..데이터를 확인했으면, 어디에 저장할 것인가? 라는 의문이 들었다.

그래서 생각해낸게, Google SpreadSheets 이다.

 

친절하게도 Google SpreadSheets는 API를 제공해준다.

아래 샘플에서는 단순하게, SpreadSheets에 있는 데이터만 조회하는 샘플만 있는데

추가하고 수정하는 방법까지 천천히 알아보자.

 

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

 

.NET Quickstart  |  Sheets API  |  Google Developers

Complete the steps described in the rest of this page to create a simple .NET console application that makes requests to the Google Sheets API. Prerequisites To run this quickstart, you need the following prerequisites: Visual Studio 2013 or later A Google

developers.google.com

 

 

1. Configuration File 받기.

말 그대로, API를 사용하기 위해서 인증키?를 발급받아야 한다.

위 버튼을 클릭 하고, 프로젝트를 생성해준다.

ClientID가 발급되었고, 해당 파일을 json파일로 받을 수도 있다.

 

 

2. Visual Studio 2019에, Google.Apis.Sheets.v4 추가하기.

말그대로 nuget을 이용하여, Google.Apis.Sheets.v4를 추가해준다.

 

3. 데이터 추가하기.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#region /// 공통영역
// 샘플에서는 SheetsService.Scope.SpreadsheetsReadonly 으로 되어있는데
// 데이터를 추가, 수정, 삭제를 하기 위해서는 SheetsService.Scope.Spreadsheets 해준다.
string[] Scopes = { SheetsService.Scope.Spreadsheets };
var ApplicationName = "Google Sheets API .NET TEST";
 
UserCredential credential;
 
// ClientID를 이용
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    GoogleClientSecrets.Load(stream).Secrets,
    Scopes,
    "user",
    CancellationToken.None,
    new FileDataStore(credPath, true)).Result;
}
 
// API 서비스 생성
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
}); 
#endregion
 
// GoogleSpreadSheetID 이다.
var spreadsheetId = "";
var range = "TestSheet";                     // 시트 이름
var oblist = new List<object>() { "123456""kim""dddddd""ggg""sk hynix""z,.z" };
var valueRange = new ValueRange() {
MajorDimension = "ROWS",                    // ROWS or COLUMNS
Values = new List<IList<object>> { oblist } // 추가할 데이터
};
 
var request = service.Spreadsheets.Values.Append(valueRange, spreadsheetId, range);
request.InsertDataOption = SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum.INSERTROWS;
request.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.RAW;
request.Execute();
cs

첫라인부터 27번째 라인까지는 추가/수정/조회 하는 부분의 공통적인 부분이니 참고하길 바란다.

대충 주석을 보면 알 수 있을 것이다.

필요한 부분을 설명해보면, 30번째 라인에는 내가 데이터를 추가할 SpreadSheets의 아이디를 넣으면 된다.

SpreadSheets의 아이디는 아래 그림의 모자이크된 영역이다.

 

4. 데이터 수정하기.

1
2
3
4
5
6
7
8
9
10
11
12
// GoogleSpreadSheetID 이다.
var spreadsheetId = "";
var range = "TestSheet!A5";                 // 시트 이름
var oblist = new List<object>() { "123456""kim""dddddd""ggg""sk hynix""z,.z" };
var valueRange = new ValueRange() {
    MajorDimension = "ROWS",                    // ROWS or COLUMNS
    Values = new List<IList<object>> { oblist } // 추가할 데이터
};
 
var update = service.Spreadsheets.Values.Update(valueRange, spreadsheetId, range);
update.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
update.Execute();
cs

추가하는 부분에서 달라진 것이 있다면, range라는 변수에 시트 이름말고 수정하는 위치가 추가 되었다는 점이다.

 

5. 데이터 조회하기.

1
2
3
4
5
6
7
8
9
10
11
12
13
var request = service.Spreadsheets.Values.Get(spreadsheetId, range);
 
ValueRange response = request.Execute();
IList<IList<Object>> values = response.Values;
if (values != null && values.Count > 0) {
    foreach (var row in values) {
        Console.WriteLine("{0}, {1}", row[0], row[4]);
    }
}
else {
    Console.WriteLine("No data found.");
}
Console.Read();
cs

데이터 조회하는 부분은 공식 홈페이지에서 예제로 정의되어있는 것이니, 잘 응용해보자.

간단하게 데이터를 추가/수정/조회하는 코드를 살펴보았는데, 실질적으로 이것저것하다보면은

Google SpreadSheets에서 제공해주는 API를 더 많이 사용할 것 같다.

유용할 것 같은 정보를 알게된다면, 또 다시 블로그에 작성해보려고 한다.

 

반응형

+ Recent posts