2014-07-13 122 views
0

我正在使用谷歌電子表格作爲成員的簡單數據庫,我想要創建一個用戶界面來搜索他們(主要用戶在技術上不是很熟練,並且有相當的分配與每個成員相關的數據,因此查看它作爲電子表格可以有點tedius)谷歌應用程序腳本非常非常慢

我已經寫了下面的腳本昨晚工作,但似乎運行如此之慢,今天超時了,我不知道爲什麼。

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循環:'用於(ⅰ= 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"); 
    } 
    }