【GAS】importrange를 사용한 Spreadsheet에 getDataRange()했을 때, 빈 줄까지 취득해 버린다.

5068 단어 spreadsheetgas

개요



getDataRange()
  • sheet 객체 함수
  • 값이 들어 있는 모든 셀을 가지는 Range 오브젝트를 취득할 수 있다

  • IMPORTRANGE
  • 지정된 스프레드시트에서 셀 범위를 로드합니다.
  • 행 번호를 지정하지 않으면 빈 줄을 포함하여 맨 아래 줄까지 읽습니다.
  • importrange 로 복제된 스프레드에 대해 getDataRange() 그러면 빈 줄까지 값이 들어 있는 것으로 간주하여 가져온다.

    query 함수에 빈 줄을 표시하지 않으면 해결할 수 있습니다.

    이벤트 확인



    아래 데이터를 JSON 형식으로 변환하는 GAS에서 이벤트를 확인해 보자.

    데이터 로드 중
    importrange("https://docs.google.com/spreadsheets/d/[シートID]/edit","[範囲]")
    

    ▼데이터를 읽은 후의 Spreadsheet


    바로 importrange 로 복제된 스프레드에 대해 getDataRange() 해 본다.

    JSON으로 변환하는 GAS
    function getData(id, sheetName) {
      var sheet = SpreadsheetApp.openById('[スプレッドのID]').getSheetByName('[シート名]');
      var rows = sheet.getDataRange().getValues();
      var keys = rows.splice(0, 1)[0];
    
      return rows.map(function(row) {
        var obj = {}
        row.map(
          function(item, index) {
            obj[keys[index]] = item;
        });
        // ログ表示
        Logger.log(obj);
      });
    }
    

    ▼로그. 공백 행이 취득되어 낭비 데이터가 대량으로 생성되고있다.


    해결책


    importrange 에서 얻은 데이터에서 빈 줄을 제거합니다.

    다음과 같이 query 함수에서 키 값이 NULL이 아닌 것을 지정해 준다.

    query 함수 적용
    query(importrange("https://docs.google.com/spreadsheets/d/[シートID]/edit","[範囲]"),"where Col1 IS NOT NULL")
    

    ▼로그. 빈 줄을 제외하고 JSON 형식입니다.

    좋은 웹페이지 즐겨찾기