Redash 쿼리에서 검색된 데이터를 Google 스프레드시트에 쓰는 스크립트를 비교적 간단하게 작성할 수 있습니다.

이번에는 데이터베이스의 데이터의 변동을 조금 보고 싶다는 주문을 받고, 간이적으로 스프레드 시트에 매시 추출한 데이터를 기록해 나가는 스크립트를 만들었습니다만, 비교적 간단하게 쓸 수 있었으므로 소개 합니다.

만든 것





매시간 스크립트를 실행하는 트리거를 설정하면 이런 식으로 한 줄씩 데이터가 축적됩니다.

스크립트의 전체 이미지


function main() {

  // Redashからデータ取得
  var redash = new Redash.Redash();
  var response = redash.getData(1513);
  var rows = response.query_result.data.rows;

  // 書き込むシートを選択
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');

  // データの入っている最後の行の次の行番号を取得
  var newRowNum = sheet.getLastRow() + 1;

  // A列のセルに実行日時を書き込む
  sheet.getRange(newRowNum, 1).setValue(new Date());

  // 1列ずつセルを進める
  for (var i = 0; i < rows.length; i++) {
    var col = i + 1;

    // 1行目にカラムヘッダーを書き込む
    sheet.getRange(2, col).setValue(rows[i].date);

    // B列以降のセルに取得したデータを書き込んでいく
    sheet.getRange(newRowNum, col).setValue(rows[i].amount);
  }
}

처리를 자세히 보면



스프레드시트에서 작성할 시트 선택


// 書き込むシートを選択
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');



작성할 행 선택



이번에는 한 줄씩 아래에 새로 데이터를 써 갑니다.


// データの入っている最後の行の次の行番号を取得
var newRowNum = sheet.getLastRow() + 1;
getLastRow() 이렇게하면 데이터가 기록 된 마지막 행 번호를 얻을 수 있습니다.

실제로 데이터 쓰기



그리고는 for문으로 1열씩 셀을 진행하면서 데이터를 써 갑니다.
// 1列ずつセルを進める
for (var i = 0; i < rows.length; i++) {
  var col = i + 1;

  // 1行目にカラムヘッダーを書き込む
  sheet.getRange(2, col).setValue(rows[i].date);

  // B列以降のセルに取得したデータを書き込んでいく
  sheet.getRange(newRowNum, col).setValue(rows[i].amount);
}

요약



일부러 데이터 추출용 테이블이나 배치를 만들 정도가 아닐 때는 GoogleAppsScrip에서 일회용 스크립트를 빨리 만들어 버리는 것이 좋다고 생각합니다.

좋은 웹페이지 즐겨찾기