将google表单响应行复制到新工作表中

时间:2016-12-16 20:42:24

标签: javascript google-apps-script

非常感谢任何帮助。

如果第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);
  }
};

1 个答案:

答案 0 :(得分:0)

根据新资料编辑:

  1. 您只想将您在“查询”中复制的行的前5列复制到“待处理”表单。

  2. 您在“待定”中已有条目,在F,G,H列中......您希望在A列的最后一个条目下添加复制的行:E

  3. 为了简单起见,我还假设您总是复制5列,因此我只能检查A列以找到最后一行(在A:E子集中)。

  4. 我还注意到,这基本上是Mogsdad的this answer副本。

  5. 如果我的假设是正确的,那么:

      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);
      }
    };
    

    我希望我能帮到你。