2014-10-28 3 views
0

저는 Google Script를 처음 사용하며 작성 스크립트가 있습니다. 이 question을 발견했습니다. 그곳의 값이 다른 시트에 있으면 행을 삭제해야합니다. 자, 내 상황이 다르다. 내 샘플 Spreadsheet입니다. Google 스프레드 시트에는 3 장이 있습니다. 첫 번째 2 개의 시트에서 비교할 고유 값은 첫 번째 열 "ID NUMBER"입니다.다른 시트에 행 값이 새 시트에 복사 된 경우

값이 주어지면 첫 번째 2 장에 784 | John Steep | I.T Department이 있으므로 전체 행을 sheet3에 복사해야합니다. 그 ID 번호가 시트 1과 2에있는 경우 내가 스크립트를 수정하려고 3.

합계 최대, 그것은 시트에 복사해야하지만 그것이 작동 할 수 없습니다 :

function copyRowtoSheet3() { 
    var s1 = SpreadsheetApp.openById("1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw").getSheetByName('Sheet1'); 
    var s2 = SpreadsheetApp.openById("1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw").getSheetByName('Sheet2'); 
    var s3 = SpreadsheetApp.openById("1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw").getSheetByName('Sheet3'); 

    var values1 = s1.getDataRange().getValues(); 
    var values2 = s2.getDataRange().getValues(); 

    var resultArray = []; 

     for(var n in values1){ 
     var keep = true 
      for(var p in values2){ 
        if(values1[n][0] == values2[p][0] && values1[n][1] == values2[p][1]){ 
        keep=false ; break ; 
        } 
      } 
     if(keep){ 
     resultArray.push(values1[n])}; 
     } 
    s1.clear() 

    s1.getRange(1,1,resultArray.length,resultArray[0].length).setValues(resultArray); 
    } 

감사합니다. 모든 도움/조언을 크게 주시면 감사하겠습니다.

답변

1

확실하지 당신의 상태 그냥, 당신이 참조하는 예보다 쉽습니다 모두 시트에 동일한 값을 얻기 작품 ... 평등 == true 인 곳에서 데이터를 유지하십시오. 이 같은

봅니다 (당신에 아이디의 변경) :

function copyRowtoSheet3() { 
    var s1 = SpreadsheetApp.openById("1x8buwr______w7MeqZAiJJIX0yC-oITBAtykBAM").getSheetByName('Sheet1'); 
    var s2 = SpreadsheetApp.openById("1x8buwr______w7MeqZAiJJIX0yC-oITBAtykBAM").getSheetByName('Sheet2'); 
    var s3 = SpreadsheetApp.openById("1x8buwr______w7MeqZAiJJIX0yC-oITBAtykBAM").getSheetByName('Sheet3'); 
    var values1 = s1.getDataRange().getValues(); 
    var values2 = s2.getDataRange().getValues(); 
    var resultArray = []; 
    for(var n=0; n < values1.length ; n++){ 
    var keep = false; 
    for(var p=0; p < values2.length ; p++){ 
     Logger.log(values1[n][0]+' =? '+values2[p][0]); 
     if(values1[n][0] == values2[p][0] && values1[n][1] == values2[p][1]){ 
     resultArray.push(values1[n]); 
     Logger.log('true'); 
     break ;// remove this if values are not unique and you want to keep all occurrences... 
     } 
    } 
    } 
    s3.getRange(+1,1,resultArray.length,resultArray[0].length).setValues(resultArray); 
} 
+0

안녕하세요 @ Serge insas. 그것은 완벽하게 작동합니다! 나는 그것이 잘못 나온 곳을 발견했다. 답변 감사합니다. – Orlando

+0

후속 질문이 있습니다. 복제 된 값을 시트 3에 복사하는 대신 시트 1과 시트 2에서 삭제하고 싶습니다. 감사. – Orlando

+0

후속 질문을 피하십시오. 대신 새 질문을 시작하십시오. 나는 이차적 인 질문이 아무도 그것을 찾을 수 없었던 원래의 게시물과 매우 다르다. –

0

시도 :

var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet 1'); 
var s2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet 2'); 
var s3 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet 3'); 

추가 :

s3.clear() 

s3.getRange(1,1,resultArray.length,resultArray[0].length).setValues(resultArray); 
+0

안녕 @Stefan. Serge의 대답과 함께 작업했습니다. 당신의 대답에 감사드립니다. 감사! – Orlando

관련 문제