1

하나의 Google 시트의 특정 열을 검사하여 새로운 추가 항목이 중복되었는지 확인하는 Google 스크립트를 만들려고합니다. 나는 다음을 생각해 냈지만 그것이 효과가 없다. 팝업 대화 상자 값이 중복되었습니다

function hasDuplicates() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Customer and form Details"); 
    var array = sheet.getRange('B2:B' + lastRow).getValues(); 
    var valuesSoFar = []; 

    for (var i = 0; i < array.length; ++i) { 
     var value = array[i]; 
     if (value in valuesSoFar) { 
      SpreadsheetApp.getUi().alert('Hello, world!'); 
     } 
     else{ 
     valuesSoFar.push(value); 
     } 
    } 
} 

는 지금까지 임 알고 위의 코드는 array라는 배열을 만들고 난에 관심이 특정 범위를 채 웁니다있다. 그때 만들려면 새, 빈, 배열은 valuesSoFar을했다. 그런 다음 코드는 열을 반복하고 이전에 해당 항목이 이미 표시되었는지 여부를 순차적으로 확인합니다. 그렇다면 경고가 나타납니다. 그렇지 않으면 새 항목 목록에 추가되고 계속됩니다.

답변

0

온라인 문서 코드를 사용하는 것처럼 보입니다.

그러나 다음과 같은 과제가 없습니다 : 단지

var lastRow = sheet.getLastRow(); 

또는 함께 lastRow을 대체 sheet.getLastRow()

업데이트 : 난 당신이 실제로 컬럼에 중복 된이있는 경우 다음과 같은 솔루션이 작동한다고 가정 B :

function hasDuplicates() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Customer and form Details"); 
    var array = sheet.getRange('B2:B' + sheet.getLastRow()).getValues(); 
    var valuesSoFar = []; 

    for (var i = 0; i < array.length; ++i) { 
    var value = array[i][0]; 
    if (value in valuesSoFar) { 
     SpreadsheetApp.getUi().alert('Hello, world!'); 
    } else { 
     valuesSoFar.push(value); 
    } 
    } 
} 

그렇지 않은 경우 아직 일하고있어, 미안해.

실행중인 오류의 유형에 대한 정보를 제공 할 수 없다면 더 이상이 문제를 조사하지 않을 것입니다.

+0

저는 온라인 문서 코드의 측면을 사용했지만 내 요구 사항에 맞게 조정했습니다. 할당을 추가했지만 여전히 작동하지 않습니다. – PaulBarr

+0

디버깅을 수행 했습니까? "일하지 않는 것"이외에 제공 할 수있는 추가 정보? 'sheet.getRange'가 1 차원 배열을 반환하는 예를 보시겠습니까? –

+0

로그를 어떻게 봅니까? 그것은 Google 시트 또는 스크립트 내에 있습니까? – PaulBarr