Google 스프레드 시트 + Apps Scripts, 한 시트에서 다른 시트로 복사 / 붙여 넣기, 특정 열의 첫 번째 빈 셀에 붙여 넣기 (B)

앤드류 해렐
  • 한 시트의 범위에서 데이터를 복사하여 B 열의 첫 번째 빈 셀에 붙여 넣는 스크립트를 작성하려고합니다. 시트의 첫 번째 빈 셀에 붙여 넣을 수 있고 제대로 작동하는 스크립트가 있습니다. , 그러나 A 열에 ID 번호의 정적 행이 있으므로 데이터를 붙여 넣으면 시트 아래로 내려갑니다. 따라서 A 열을 건너 뛰고 B 열의 첫 번째 빈 셀에 붙여 넣을 방법이 필요합니다.

  • 다른 부분은 때때로 B 열에 빈 셀이 있다는 것입니다. 따라서 마지막 빈 셀을 가져 오려면이를 건너 뛰어야합니다.

  • 마지막 빈 셀을 가져오고 제대로 작동하는 자습서를 찾았지만 데이터를 붙여 넣을 함수에 통합하는 방법을 알 수 없습니다. 지금까지 내가 가진 것은 다음과 같습니다.

function myFunction() {
  var sss = SpreadsheetApp.openById('1dp5s8G9vFF5LzF5mAaY-JoySLGekh5UKHwt6jFcGOnA');
  var ss = sss.getSheetByName('Form'); 
  var range = ss.getRange('A8:H');
  var data = range.getValues();
 
     var tss = SpreadsheetApp.openById('1Vq_xX9cbC6OBAh1IRKsVKSPQvc5FEUFsJ2mlPzuFZ6o');
     var ts = tss.getSheetByName('Data');
     var columnToCheck = ts.getRange("B:B").getValues();
     var lastRow = getLastRowSpecial(columnToCheck);
  
  
     Logger.log(lastRow)
};
 

function getLastRowSpecial(range){
  var rowNum = 0;
  var blank = false;
  for(var row = 0; row < range.length; row++){
 
    if(range[row][0] === "" && !blank){
      rowNum = row;
      blank = true;
    }else if(range[row][0] !== ""){
      blank = false;
    };
  };
  return rowNum;
};

  • 그래서 기본적으로 "lastRow"에 의해 결정된 셀에서 setValues ​​(data) 함수가 필요합니다.

  • 또는 다른 방법으로이 작업을 수행 할 수있는 방법에 대한 제안이있는 경우 듣고 싶습니다.

마리오 스

설명:

  • 당신은 매우 가깝습니다. getLastRowSpecial함수는 실제로 열의 마지막 행을 가져오고 B빈 셀을 고려합니다.

  • 그런 다음 목표는 반환 된 값을 사용하고 setValues 를 사용하여 lastRow시작하는 데이터를 설정하는 것 입니다.lastRow+1

    ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data);
    
  • 스크립트에서 내가 만든 또 다른 수정 사항은 전체 data범위 를 취하는 대신 콘텐츠가있는 마지막 행까지만 얻는 것입니다. 이것이 작동하지 않으면 해당 부분을 건너 뛰고 솔루션을 사용하십시오. 이것은 내가 수정 한 부분입니다.

    var range = ss.getRange('A8:H'+ss.getLastRow());
    

해결책:

나는 수정했다 myFunction:

function myFunction() {
  var sss = SpreadsheetApp.openById('1dp5s8G9vFF5LzF5mAaY-JoySLGekh5UKHwt6jFcGOnA');
  
  var ss = sss.getSheetByName('Form'); 
  var range = ss.getRange('A8:H'+ss.getLastRow()); // new code
  var data = range.getValues();
 
     var tss = SpreadsheetApp.openById('1Vq_xX9cbC6OBAh1IRKsVKSPQvc5FEUFsJ2mlPzuFZ6o');
     var ts = tss.getSheetByName('Data');
     var columnToCheck = ts.getRange("B:B").getValues();
     var lastRow = getLastRowSpecial(columnToCheck);
     
     ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data); // new code

};
 
function getLastRowSpecial(range){
  var rowNum = 0;
  var blank = false;
  for(var row = 0; row < range.length; row++){
 
    if(range[row][0] === "" && !blank){
      rowNum = row;
      blank = true;
    }else if(range[row][0] !== ""){
      blank = false;
    };
  };
  return rowNum;
};

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관