2014-10-28 37 views
0

我是Google新手,我有一個要創建的腳本。我發現這question,他應該刪除行,如果它的值存在於另一張表中。現在,我的情況不同了。這是我的樣本Spreadsheet。在該Google電子表格中,我有3張表。在前兩張紙上將比較的唯一值是第一列「ID NUMBER」。將行值複製到新工作表(如果它存在於另一個工作表中)

給定值,784 | John Steep | I.T Department存在於前兩張中,因此整行應複製到sheet3。

綜上所述,如果在表1和2中存在該ID號,應在表複製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

不知道你的病情的作品...獲取是在兩片材等於比你參考的例子更容易的價值觀,只是保持數據在平等==真正的地方。

嘗試像這樣(更改ID對你的):

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 2014-10-29 01:54:27

+0

我有一個跟進問題。如果不是將重複值複製到表單3,我想從表單1和表單2中刪除它們?謝謝。 – Orlando 2014-11-04 08:02:26

+0

避免跟進問題,請改爲開始新的問題。我的第二個問題是從原來的帖子如此不同,沒有人能找到它... – 2014-11-04 08:17:56

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 2014-10-29 01:57:03

相關問題