0

我在Google Spreadsheet中有一些客戶數據,如下所示。新的條目會定期添加,並且我希望使用腳本來搜索聯繫人號碼列以檢查新條目的聯繫人號碼是否已存在。 另外,如果可能的話,我希望腳本給出某種指示現有條目行號的通知。例如,通知可能是一個新的列,它只會寫入「行號」或「沒有找到任何條目」。在電子表格列中搜索重複的條目

獲取的數據:

Contact Number Email ID   Venue Address  Service Date 
1234567890  [email protected] cypress   21/04/2016 
[email protected] river run drive 22/04/2016 

我在尋找:

Contact Number Email ID   Venue Address  Service Date Duplicate entry in 
1234567890  [email protected] cypress   21/04/2016  row1 
[email protected] river run drive 22/04/2016  no entries found 
+0

您可以搜索重複的條目,這意味着該項目已經在表中存在。或者您可以在輸入前查看它是否已經存在。這是什麼? –

回答

1

所以,你的描述意味着你要搜索的條目它的輸入之前。而不是搜索重複項,這意味着數據中已經有重複的行。我已經爲你制定了一個方法。

這顯示了兩個例子,這將找到重複或它會通過電話號碼找到一個條目。邏輯和定製的其餘部分由您決定。

下面是這種情況的示例片:Example Spreadsheet

編輯:添加列的發現的邏輯,並增加了一個按鈕,可以按下看到片材中的重複。 注意:您必須登錄到一個谷歌帳戶的腳本運行

//Entry Point 
function myFunction() { 
    var sheet = SpreadsheetApp.getActiveSheet(); //Get the current sheet 
    var dataRange = sheet.getDataRange(); 
    var valuesRange = dataRange.getValues(); //The array of data on the sheet 
    var columns = GetColumns(valuesRange, dataRange.getNumColumns(), 0); 

    var duplicates = SearchForDuplicates(valuesRange, columns.columns['Contact Number'].index); //Search for existing duplicates 
    var elementIndex = SearchForValue(valuesRange, columns.columns['Contact Number'].index, 123456789); //Search for a phone number of 123456789 

    if(duplicates.length > 0){ //If there are duplicates 
    var isDuplicateColumn = columns.columns['Is Duplicate'].index; 
    for(var i = 0; i < duplicates.length; i++){ 
     valuesRange[duplicates[i].index][isDuplicateColumn] = 'Yes'; //Assign Yes to the appropriate row 
    } 
    dataRange.setValues(valuesRange); //Set the spreadsheets values to that of the modified valuesRange 
    } 
    Logger.log(duplicates); 
    Logger.log(elementIndex); 
} 

//Searches an array for duplicate entries 
function SearchForDuplicates(array, columnIndex){ 
    var uniqueElements = {}; 
    var duplicates = []; 
    for(var i = 0; i < array.length; i++){ 
    if(typeof uniqueElements[array[i][columnIndex]] === 'undefined'){ 
     uniqueElements[array[i][columnIndex]] = 0; //If the element does not yet exist in this object, add it 
    } else { 
     duplicates.push({row: array[i], index: i}); //If the element does exist, it's a duplicate 
    } 
    } 
    return duplicates; 
} 

//Searches an array for a value 
function SearchForValue(array, columnIndex, value){ 
    for(var i = 0; i < array.length; i++){ 
    if(array[i][columnIndex] == value){ 
     return i; //Element found, return index 
    } 
    } 
    return -1; //No element found, return -1 
} 

//Gets a columns object for the sheet for easy indexing 
function GetColumns(valuesRange, columnCount, rowIndex) 
{ 
    var columns = { 
    columns: {}, 
    length: 0 
    } 

    Logger.log("Populating columns..."); 
    for(var i = 0; i < columnCount; i++) 
    { 
    if(valuesRange[0][i] !== ''){ 
     columns.columns[valuesRange[0][i]] = {index: i ,value: valuesRange[0][i]}; 
     columns.length++;  
    } 
    } 
    return columns; 
}