2016-12-16 67 views
1

非常感謝您的任何幫助。將Google表單響應行復制到新工作表中

我想獲得表單響應,如果第5行中的單元格大於0,則將表單響應移至另一個表單。我在下面使用的代碼移動它,但將其添加到具有公式的最後一個單元格下。有沒有這個代碼的修改版本,我可以告訴它忽略單元格中的公式。也只複製行A:E。由於

function moveToAppropriateSheet(e) { 
    // assumes source data in sheet named Form Responses 1 
    // target sheet of move to named TR Requested 
    // test column with yes/no is col 11 or K 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Query'); 
    var r = s.getRange(s.getLastRow(),1,1,20); 
    var data = r.getValues(); 

    if(data[0][4] >0) { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Pending"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    targetSheet.getRange(targetSheet.getLastRow()+1,1,1,20).setValues(data); 
    s.deleteRow(row); 
    } 
}; 
+0

首先,你需要證明看你的問題。你說:「也只複製行A:E」我假設你的意思是列A:E這很容易確定,但任何你可以做的事情使你的問題更容易理解,增加了你的可能性得到一個很好的答案。 –

+0

您是否希望具有公式的單元格僅具有複製公式的值,而不是公式本身? [鏈接到Apps腳本文檔 - 將值複製到範圍](https://developers.google.com/apps-script/reference/spreadsheet/range#copyvaluestorangesheet-column-columnend-row-nd) –

回答

0

編輯在新的信息:

  1. 你只想複製您在「查詢」複製到表「待定」的行的第一個5列。

  2. 你已經有條目「待定」,在F,G,H,列...你想添加複製的行中的最後一個條目下列A:電子

  3. 我也爲簡單起見,假定您總是複製5列,以便我只能檢查列A以查找最後一行(在子集A:E中)。

  4. 我還注意到,這本質上是Mogsdad的this answer的重複。

如果我的假設是正確的,那麼:

function moveToAppropriateSheet(e) { 
    // assumes source data in sheet named Form Responses 1 
    // target sheet of move to named TR Requested 
    // test column with yes/no is col 11 or K 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Query'); 
    var r = s.getRange(s.getLastRow(),1,1,5); // Change 20 to 5 to copy only cols A:E 
    var data = r.getValues(); 


    var targetSheet = ss.getSheetByName("Pending"); 
    var lastRowIgnoringFormulae = 0; 

    var targetSpace = targetSheet.getRange("A:A").getValues(); 
    var lastRow = targetSpace.filter(String).length; 

    if(data[0][4] >0) { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    targetSheet.getRange(lastRow+1,1,1,5).setValues(data); // +1 to convert into R1C1 notation 
    s.deleteRow(row); 
    } 
}; 

我希望我幫助。

+0

我有一個查詢表我所有的表單都會回覆。我希望能夠將列A:E移動到等待表單。但我有F3到K200的公式,而不是將行移動到A3,它將它添加到行201.你有代碼現在收集正確的列號,但仍然移動到第200行。任何建議? –

+0

正如我上面所說的,我假設你想要檢查公式的單元格或第一列中沒有公式。要改變這種情況,請將if(targetSpace [i] [0]!==「」){'to'if(targetSpace [i] [5]!==「」){'。 '這指示腳本檢查F列。 – Paul

+0

即使切換了該代碼,它仍將該行放在公式後面(行200) –

相關問題