GCP/Apps Script

Apps Script로 Google Sheets의 저장 영역 필수 값 체크하기

whistory 2022. 9. 6. 10:38
반응형

 

 

Sheet 데이터를 BigQuery에 저장할 때,

 

나이, 성별을 필수 값으로 입력하고 싶다.

dataNullCheck 함수와, reqIdx 를 추가한다.

 

 

function insertSheetData() {
  const sheetUrl  = SpreadsheetApp.getActiveSpreadsheet().getUrl();
  const sheetName = "Sheet3"
  const sheet     = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName(sheetName);
  const table_id  = "insert_test";

  const reqIdx =  [
                      {name:'이름(A' , index:1}
                    , {name:'나이(B' , index:2}
                    , {name:'성별(C' , index:3}
                  ];

  const validationCheck = dataNullCheck(sheet, 2, reqIdx);
  if ( validationCheck != "done" ) {
    console.log(validationCheck + "는 필수입력 값입니다.")
    return;
  }

  const colInfo = {startRow:2, startColumn:1};

  const saveTime = getDateTime("BQ");
  const addValues = {
                      status      : "Y"
                      , saveTime  : saveTime
                  };

  const resultFlag = loadSpreadsheet(sheet, global_datasetId, table_id, colInfo, addValues);

  console.log(`Result Flag : ${resultFlag}`);

}
/**
 * 데이터 null 체크. like validation check
 * @param {object} spreadSheet  = 해당 function을 호출한 spreadsheet
 * @param {string} startRow     = 시작 행번호
 * @param {object} keyIdx       = 키값 정보
 */
function dataNullCheck (spreadSheet, startRow, keyIdx) {
  for ( q in keyIdx ) {
    var endRow = spreadSheet.getLastRow()-startRow+1;
    var data = spreadSheet.getSheetValues(startRow, keyIdx[q].index, endRow, 1);

    for ( i in data ) {
      var value = data[i];
      if ( isNull(value) ) {
        return keyIdx[q].name + (parseInt(i)+parseInt(startRow)) + ")";
      }
    }
  }

  return "done";
}

반응형