본문 바로가기

유니티/데이터 관리

[유니티]구글 독스를 통해 데이터를 스프레드 시트에 저장하기

[구글 독스 생성]

[생성]

=>데이터 입력 매체(독스)와 저장장소(스프레드 시트)를 설정한다 .

먼저 독스를 생성해주자 .

=>단답형과 객관식 질문 총 3개의 설문을 생성한다.

=>완료되었다면 응답탭 - Sheets에 연결을 눌러서 구글 시트를 생성한다 .

=>기존 시트가 있다면 활용하여도 무방하다 .

=>이렇게 시트에 내가 설정한 응답들이 들어온다. 이때 ,타임스탬프는 설문지를 통해 스프레드 시트를 만들면 자동으로

생성되는 항목인데 데이터를 입력한 시간을 입력해준다.

 

[유니티에 연결]

[URL 확인]

=>미리보기를 누르면 남들이 보는 설문지가 나온다 .

=> 여기서 우클릭을 통해 페이지의 소스를 확인 가능하다 .

=>Ctrl + f 를 통해 form action을 검색한다 .이것이 폼의 URL이다 . 

 

[각 설문의 키값 확인]

 

각 설문에 값을 보내려면 키값이 필요하다.

=>설문지 화면에서 F12를 눌러 페이지 소스코드를 띄운다.

=>entry. 를 검색한다 .이것이 스프레드 시트 각각 열의 항목 (설문 내용)이다 .

설문 내용이 3개였으니 3개의 entry가 검색된다 .

(객관식이 추가되면 객관식은 entry. 키값과 entry.키값_sentinal 두개가 생성)

여튼 이렇게 얻은 entry.4504432와 같은 값이 설문의 키값이다 .

이렇게 얻은 키값은 다음과 같이 사용한다.

rivate string BASE_URL = "https://docs.google.com/forms/u/0/d/e/1FAIpQLSdx3l3iAnB1huupbESDs0ih4u49gXbgSs7CPi0oTUJIhsamkw/formResponse";
IEnumerator Post(string name, string email, string phone)
    {
        WWWForm _form = new WWWForm();
        _form.AddField("entry.758232685", name);
        _form.AddField("entry.454044342", email);
        //_form.AddField("entry.1328042420", phone);
        
       using (UnityWebRequest request=UnityWebRequest.Post(BASE_URL,_form))
        {
            yield return request.SendWebRequest();
            if(request.result!=UnityWebRequest.Result.Success)
            {
                Debug.Log("실패");
            }
            request.Dispose();
        }
    }

=>아래 출처에서는 WWW를 사용했지만 이제는 UnityWebRequest를 사용한다 . 

또한 웹리퀘스트를 사용하며 아래 버그가 생기는 문제가 있어 Dispose 까지 수행해주었다 .

A Native Collection has not been disposed, resulting in a memory leak. 

Enable Full StackTraces to get more details.

=>만약 주관식이라면 다음과 같이 처리한다

_form.AddField("entry.454044342","옵션 1");
//해당 주관식의 이름을 넘겨준다

 

 

 

 

 

출처

WebRequest

메모리 누수 버그 해결

https://funfunhanblog.tistory.com/111

https://blog.naver.com/qkrghdud0/222006327222