GCP/Apps Script

Apps Script로 MSSQL 데이터를 분단위 trigger로 sync 유지하기

whistory 2022. 12. 27. 10:56
반응형

 

 

mssql 의 데이터를 가져와 Google Sheets에 데이터를 뿌려 줘 본다.

 

해당 Google Sheets의 데이터들의 내용을 주기적으로 MSSQL 데이터와 sync를 맟추고 싶다.

이를 해결하기 위해, Apps Script에서 제공하는 Trigger 중 Time-driven 을 이용한다.

 

 

일단 MSSQL의 데이터를 해당 sheet에 뿌려준다.

const address = 'mssql ip address';
const port    = 'mssql port';
const user    = 'mssql user';
const userPwd = 'mssql password';
const db      = 'mssql database';
const dbUrl   = `jdbc:sqlserver://${address}:${port};databaseName=${db}`;

function readAndBindingMssqlData () {
    var conn = Jdbc.getConnection(dbUrl, user, userPwd);

    var start = new Date();
    var stmt = conn.createStatement();
    
    stmt.setMaxRows(1000);
    
    var results = stmt.executeQuery('SELECT Dept, [Last Name], [First Name], [Job Title] FROM dbo.user_data');
    var numCols = results.getMetaData().getColumnCount();
    var rows = new Array();

    while (results.next()) {
        var arr1 = new Array(numCols);
        for (var col = 0; col < numCols; col++) {
          arr1[col] = results.getString(col + 1);
        }
        rows.push(arr1);
    }

    results.close();
    stmt.close();

    Logger.log(rows);

    const mySheetUrl = "https://docs.google.com/spreadsheets/d/mysheetid/edit";
    const sheetName = "sample";
    const sheet = SpreadsheetApp.openByUrl(mySheetUrl).getSheetByName(sheetName);

    sheet.getRange(1, 1, rows.length, numCols).setValues(rows);

    var end = new Date();
    Logger.log('Time elapsed: %sms', end - start);
}

 

 

 

이제 Apps Script의 Triggers 메뉴로 이동한다.

 

 

 

 

[Add Trigger] 버튼을 눌러, Trigger를 추가한다.

 

 

 

 

  • Choose which function to run : 실행 할 함수 선택
  • Choose which deployment should run : 실행 할 배포 선택 (head)
  • Select event source : Time-driven 선택
  • Select type of time based trigger : 실행 유형 선택 (특정 시간, 특정 주기)
  • Select hour interval : 위의 실행 유형에 따른, 시간 간격 선택.

주기적인 데이터 sync를 위해, 1분 단위로 데이터를 가져왔다.

 

 

저장하면,

Triggers 화면에서 등록한 Trigger를 확인 할 수 있다.

 

Executions 화면에 들어가면, 생성한 Trigger가 정상적으로 실행되었는지 확인 할 수 있다.

 

 

 

실행결과 화면

반응형