GCP/Apps Script

Apps Script로 Google Sheets의 a1notaion을 getRange에서 사용되는 row, column, numRows, numColumns 범위로 변경

whistory 2023. 6. 22. 14:54
반응형

 

 

 

Apps Script로 Google Sheets의 데이터들을 가져올 때 getRange()를 사용한다.

 

a1Notation을 그냥 사용해도 되지만,

a1Notation을 입력 받고, 이를 getRange(row, column, numRows, numColumns) 으로 변경해야 할 경우가 있을 수도 있기 때문에 변환하는기능을 구현해본다.

 

 

 

function getSheetValues() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("상품리스트_지사용");

  const range = convertA1NotationToRange("A2:C4");
  console.log('영역변환 "A2:C4');
  console.log(range);
  console.log(`${range.row}, ${range.column}, ${range.numRows}, ${range.numColumns}`);

  // A1Notaion으로 조회
  const A1Values = sheet.getRange("A2:C4").getValues();
  console.log(`sheet.getRange("A2:C4").getValues()`);
  console.log(A1Values);

  // 영역을 수동으로 지정하여 조회
  const ManualValues = sheet.getRange(2, 1, 3, 3).getValues();
  console.log(`sheet.getRange(2, 1, 3, 3).getValues();`);
  console.log(ManualValues);
  
  // A1Notaion을 영역으로 변환하여 조회
  const values = sheet.getRange(range.row, range.column, range.numRows, range.numColumns).getValues();
  console.log(`sheet.getRange(range.row, range.column, range.numRows, range.numColumns).getValues();`);
  console.log(values);
}
/**
 * ### Description
 * 입력받은 A1Notaion을 getRange의 범위로 변경
 * @param  {String} a1NotationString.
 * @return {Object} Range Info.
 */
function convertA1NotationToRange(a1NotationString) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getRange(a1NotationString);
  var row = range.getRow();
  var column = range.getColumn();
  var numRows = range.getNumRows();
  var numColumns = range.getNumColumns();
  
  // 선택영역 반환
  return {
    row: row,
    column: column,
    numRows: numRows,
    numColumns: numColumns
  };
}

반응형