2014-07-13 2 views
0

Google 스프레드 시트를 간단한 회원 데이터베이스로 사용하고 있으며이를 통해 검색 할 수있는 사용자 인터페이스를 만들고 싶습니다. (기본 사용자는 기술적으로 능숙하지 않으며google apps 스크립트가 매우 느림

나는 지난 밤에 일한 folowing 스크립트를 작성했지만 너무 천천히 실행되어 오늘은 시간이 흐른 것처럼 보입니다. 이유는 모르겠습니다.

function findMember() { 
    // set spreadsheet variable 
    var SS = SpreadsheetApp.getActiveSpreadsheet(); 

    // set sheet variables 
    var memberSearchSheet = SS.getActiveSheet(); 
    var memberDataSheet = SS.getSheetByName("Member Data"); 

    // get the search variables 
    var searchFirstName = memberSearchSheet.getRange('C2').getValue(); 
    var searchLastName = memberSearchSheet.getRange('C3').getValue(); 

    // get last row of data 
    var lastRow = memberDataSheet.getLastRow(); 
    for (var i = 2;lastRow;i=i+1){ 
    if (searchFirstName == memberDataSheet.getRange('R'+i+'C2').getValue() && searchLastName == memberDataSheet.getRange('R'+i+'C3').getValue()){ 
     memberSearchSheet.getRange('C5').setValue(memberDataSheet.getRange('R'+i+'C5').getValue()); 
     //throw new Error("ouch") 
    } 
    } 

    // small pop up notification in bottom right corner .toast(message, title, display time) 
    //var message = "Your search for " + searchFirstName + " " + searchLastName + " is complete."; 
    //SS.toast(message,"Search Complete",15); 

}; 
+0

하여 For 루프 :'에 대한 (I = 2; 나는

+0

건배이 루프를 고정 조합 대답은 내가 도움을 충당를 선택 : –

답변

1

배열 내의 모든 데이터를 한 번에 가져온 다음 값을 배열의 값과 신속하게 비교할 수 있습니다. 이런 식으로 뭔가 : 내가 바꿀 것

var sheet = SpreadsheetApp.getActive().getSheetByName("Member Data"); 
    var data = sheet.getDataRange().getValues(); 
    for (var i = 1; i < data.length; i++) { 
    if (data[i][0] == firstName && data[i][1] == secondName) { 
     throw("Found"); 
    } 
    } 
관련 문제