Google工作表便笺以在工作表之间复制数据

时间:2018-07-04 22:51:53

标签: google-apps-script google-sheets spreadsheet copy-paste

我是Google脚本的新手,我正在尝试创建一个脚本以将数据从工作表1复制到工作表2,并同时对其进行重新排序。我从Google表单获取数据,因此数据正在不断更新。

这里以2张图像为例。 N°1是我的数据存储方式,N°2是我希望其存储在工作表2中的方式。

这个想法是让脚本在每次出现新行时都复制数据。

来自表单的数据。

Data from Form

这就是我想要的样子。

This is how I would like it to be

这是我的初始代码。

function copyrange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Ingreso'); //source sheet
  var testrange = sheet.getRange('J:J');
  var testvalue = (testrange.getValues());
  var csh = ss.getSheetByName('Auxiliar Ingreso'); //destination sheet
  var data = [];
  var columnasfijas = [];
  var cadena = [];
   

  //Condition check in G:G; If true copy the same row to data array
for (i=1; i<testvalue.length;i++) {
  
  data.push.apply(data,sheet.getRange(i+1,1,1,9).getValues());
  
  if ( testvalue[i] == 'Si') {
   data = (sheet.getRange(i+1,1,1,9).getValues()).concat  (sheet.getRange(i+1,11,1,9).getValues()); // this beaks up into 2 rows Idon't know why
   /*cadena = (columnasfijas);
   data.push.apply(data, columnasfijas);*/
 }
  
  csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
 }
//Copy data array to destination sheet

 //csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
 
}

在这一行中,我还无法连接不同长度的数据。应该是:(i+1,1,1,6). concat.....(i+1,11,1,3)

data = (sheet.getRange(i+1,1,1,9).getValues()).concat (sheet.getRange(i+1,11,1,9).getValues()); // this beaks up into 2 rows Idon't know why

当我按原样运行它时,我得到一个错误,该长度应该是9而不是3`

谢谢!

1 个答案:

答案 0 :(得分:0)

这可以使用公式而不是应用程序脚本来更简单地完成:

=sort(importrange("spreadsheetURL", "Sheet1!A2:AA10000"),sort_col#,TRUE/FALSE,[sort_col2#],[TRUE/FALSE]...)

有关importrange功能的文档:https://support.google.com/docs/answer/3093340 有关排序功能的文档:https://support.google.com/docs/answer/3093150

输入公式后,单元格上可能会出现红色三角形,请确保单击该单元格,然后单击“允许访问”按钮以使一个电子表格可以访问另一个电子表格。