# Use UGS on WPF, Console C# Project

&#x20;UGS는 WPF 혹은 C#으로 만들어진 Console Application 에서도 사용 가능합니다. 이 기능을 제공하는 이유는, C#으로 만든 게임의 서버에서 클라이언트측 데이터를 검사하는데에 사용하거나, 게임 자체가 서버에서 시뮬레이션 될 수 있기 때문입니다.\
\
먼저, 사용하려면 UGS를 임포트한 후, HamsterGoogleSpreadSheet.dll을 찾아 자신만의 C# 솔루션에 DLL을 불러오시길 바랍니다.

![](/files/-Mf4FUbREvaTzP73uDFE)

## Use Example Code

임포트를 했다면 아래 코드를 참고해보세요. 코드 불러오기, 생성, 읽기쓰기 등 모든 예제가 포함되어 있습니다.

```csharp
using Hamster.ZG;
using Hamster.ZG.IO.FileReader;
using Hamster.ZG.IO.FileWriter;
using UGS.Protocol.v2.Req;
using System;
using System.IO;

namespace ConsoleApp1
{
    class Program
    { 
        static void Main(string[] args)
        { 
            // Login
            GoogleSheet.Initialize("https://script.google.com/macros/s/AKfycbxpqlYM5SfX0pL2RHzgiT_cFykKFLkcr_PgzU1KKnVx2Aa6YNN3/exec", "123123");



            // Code Generate And Copy To Folder 
            GoogleSheet.Generate("1BXya0YQq980kbNBN_-hQAvmBrNkHFIoqXJkQTXIsXHQ",
            () => {
                System.IO.DirectoryInfo di1 = new System.IO.DirectoryInfo("TableScript");
                System.IO.DirectoryInfo di2 = new System.IO.DirectoryInfo("CachedJson");

                DirectoryCopy(di1.FullName, "../../../TableScript", true);
                DirectoryCopy(di2.FullName, "../../../CachedJson", true);
            });


            GoogleSheet.LoadAllData();
            foreach (var value in UnitData.Balance.BalanceList) 
                Console.WriteLine($"{value.id} {value.jump} {value.name} {value.speed}"); 
            
        }



        
        private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
        {
            // Get the subdirectories for the specified directory.
            DirectoryInfo dir = new DirectoryInfo(sourceDirName);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException(
                    "Source directory does not exist or could not be found: "
                    + sourceDirName);
            }

            DirectoryInfo[] dirs = dir.GetDirectories();

            // If the destination directory doesn't exist, create it.       
            Directory.CreateDirectory(destDirName);

            // Get the files in the directory and copy them to the new location.
            FileInfo[] files = dir.GetFiles();
            foreach (FileInfo file in files)
            {
                string tempPath = Path.Combine(destDirName, file.Name);
                file.CopyTo(tempPath, true);
            }

            // If copying subdirectories, copy them and their contents to new location.
            if (copySubDirs)
            {
                foreach (DirectoryInfo subdir in dirs)
                {
                    string tempPath = Path.Combine(destDirName, subdir.Name);
                    DirectoryCopy(subdir.FullName, tempPath, copySubDirs);
                }
            }
        }

    }
}

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://shlifedev.gitbook.io/unitygooglesheets/and/use-ugs-on-wpf-console-c-project.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
