• 구글 스프레드시트 데이터(DB) 연동 및 수집










「 구글 스프레드시트 데이터(DB) 연동 및 수집 」



안녕하세요.



오늘은 구글 스프레드시트[spread sheet]를 이용하여 데이터 연동 및 수집하는 방법을 포스팅 해보겠습니다.










구글에서 무료로 제공하는 엑셀이며,

구글 드라이브 > 구글 스프레드시트를 사용할 수 있습니다.

구글 스프레드시트는 스크립트를 사용하여 타 사이트(랜딩페이지)와 데이터(DB)를 연동이 가능합니다.



그럼 지금부터 구글 스프레드시트와 타 사이트 연동하여 데이터(DB)를 수집해 보도록 하겠습니다.







구글 스프레드시트 설정하기





1. 구글 드라이브(https://drive.google.com/) 접속하여 스프레드시트를 만들기



(위에서도 말씀드린거 처럼 구글 드라이브 안에 구글 스프레드시트가 존재함으로 구글 드라이브에 접속을 해야 합니다.)






개인용 '무료'이며 비즈니스용은 '유료'로 사용이 가능합니다.



전 개인용으로 진행해보도록 하겠습니다.





2. 구글 드라이브 로그인

(계정이 없는경우 하단에 계정만들기를 통해서 구글 계정을 만드시면 됩니다.)


3. 로그인 후 구글 드리이브 메인화면




 

4. 구글 빈 스프레드시트 만들기





좌측 상단에 '새로 만들기' 클릭!!



① Google 스프레드시트 우측에 '>' 클릭!!

② '빈 스프레드시트' 클릭!!






5. 스크립트 편집기 이동하기



① 상단에 메뉴 '도구' 클릭

② '<> 스크립트 편집기' 클릭








 ↓ 스크립트 편집기 초기화면 ↓






6. 스크립트 편집기에 스크립트 추가하기

(원래 기본 들어가 있는 내용은 모두 삭제 후 아래 스크립트를 추가하세요.)




스크립트 내용

--------------------------------------------------------------------------------------



//  1. Enter sheet name where data is to be written below

//  2. Run > setup

//

//  3. Publish > Deploy as web app

//    - enter Project Version name and click 'Save New Version'

//    - set security level and enable service (most likely execute as 'me' and access 'anyone, even anonymously)

//

//  4. Copy the 'Current web app URL' and post this in your form/script action

//

//  5. Insert column names on your destination sheet matching the parameter names of the data you are passing in (exactly matching case)

var XLS_SHEET_NAME = '시트1';

var XLS_SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service



// If you don't want to expose either GET or POST methods you can comment out the appropriate function

function doGet(e){

  return handleResponse(e);

}

function doPost(e){

  return handleResponse(e);

}



function handleResponse(e) {



  // shortly after my original solution Google announced the LockService[1]

  // this prevents concurrent access overwritting data

  // [1] http://googleappsdeveloper.blogspot.co.uk/2011/10/concurrency-and-google-apps-script.html

  // we want a public lock, one that locks for all invocations

  var lock = LockService.getPublicLock();

  lock.waitLock(30000);  // wait 30 seconds before conceding defeat.



  try{

    // next set where we write the data - you could write to multiple/alternate destinations

    var doc = SpreadsheetApp.openById(XLS_SCRIPT_PROP.getProperty('key'));

    var sheet = doc.getSheetByName(XLS_SHEET_NAME);



    // we'll assume header is in row 1 but you can override with header_row in GET/POST data

    var headRow = e.parameter.header_row || 1;

    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];

    var nextRow = sheet.getLastRow()+1; // get next row

    var row = [];

    // loop through the header columns

    for (i in headers){

      if (headers[i] == 'Timestamp'){ // special case if you include a 'Timestamp' column

        row.push(new Date());

      } else { // else use header name to get data

        row.push(e.parameter[headers[i]]);

      }

    }

    // more efficient to set values as [][] array than individually

    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);

    // return json success results

    return ContentService

          .createTextOutput(JSON.stringify({'result':'success', 'row': nextRow}))

          .setMimeType(ContentService.MimeType.JSON);

  } catch(e){

    // if error return this

    return ContentService

          .createTextOutput(JSON.stringify({'result':'error', 'error': e}))

          .setMimeType(ContentService.MimeType.JSON);

  } finally { //release lock

    lock.releaseLock();

  }

}



function setup() {

    var doc = SpreadsheetApp.getActiveSpreadsheet();

    XLS_SCRIPT_PROP.setProperty('key', doc.getId());

}


--------------------------------------------------------------------------------------



스크립트 저장하기








7. 스크립트 실행하기



상단메뉴 '실행' 클릭!!

① '함수 실행' 클릭!!

② 'setup' 클릭!!












8. 스크립트 권한확인



'권한 검토' 클릭










[스크립트 권한 인증절차]



① 계정 선택








② 확인되지 않는 앱



(말 그대로 구글에서 아직 확인하지 않는 앱입니다.)



'고급' 클릭!!








③ 하단에 '테스트 프로젝트 이동' 클릭








④ 하단 '허용' 클릭










9. 웹 앱으로 배포하기



게시 > 웹 앱으로 배포... 클릭!!






스프레드시트 게시 권한변경



Who has access to the app:

'Anyone, even anonymous' 선택




스프레드시트 게시 웹앱URL :



① 웹앱 URL 복사하기

(추후에 데이터 연결시 해당 URL 사용)



② '확인' 클릭!!










구글 스프레드시트 설정이 완료되었습니다.



=======================================================================================================



설정된 스프레드시트를 디비카트(https://dbcart.net/)와 연동하여 데이터(DB)를 직접 받아보도록 하겠습니다.







디비카트 연동방법



1. 디비카트 회원가입(https://dbcart.net/login.html)




2. 랜딩페이지 꾸미기

https://dbcart.net/landing_setup.html



데이터(DB)를 받기위해서 랜딩페이지 기본설정을 하는 페이지입니다.






3. 구글 스프레드시트와 디비카트 연동작업



디비카트 노티설정하기 : https://dbcart.net/landing_info_noti.html



① 구글 스프레드시트와 디비카트를 연동유무 체크하기

② 구글 스프레드시트 '웹앱 URL' 입력 (구글 스프레드시트 마지막에 부여받은 웹앱URL)

③ 기본설정된 노티 값

title => 랜딩타이틀

date => 날짜

data1 => 이름

data2 => 연락처




구글 스프레드시트에 적용방법



title => 랜딩타이틀

date => 날짜

data1 => 이름

data2 => 연락처








구글 스프레드시트와 디비카트의 연동이 끝이 났습니다.



=======================================================================================================





테스트 진행



1. 테스트용 디비카트 랜딩페이지

(디비카트에서 임시로 만든 랜딩페이지에 데이터값을 넣어봤습니다.)




title => 대출상담

date => 2019.12.26

data1 => 홍길동

data2 => 010-1234-1234



아래에 구글 스프레드시트에 실시간 데이터(DB)가 추가되는걸 보실 수 있습니다.






정상적으로 테스트가 완료되었습니다.

=======================================================================================================



이상으로 

구글 스프레드시트 데이터(DB) 연동하기

구글 스프레드시트와 디비카트 연동하여 데이터(DB) 수집하기

였습니다.



끝까지 읽어주셔서 감사합니다.

  • (주) 상상의눈
    대구시 중구 달구벌대로 1932 4층 | 대표 이현구
    사업자등록번호 504-86-00831| 통신판매신고 제 2019-대구중구-0317 호
    고객센터 070-7813-8861 | 업무시간 오전 10시 ~ 오후 7시(점심시간 오후 12시30분 ~ 오후 1시30분까지)
    E-mail help@dbcart.net