我是Google脚本的新手,我正在尝试创建一个脚本以将数据从工作表1复制到工作表2,并同时对其进行重新排序。我从Google表单获取数据,因此数据正在不断更新。
这里以2张图像为例。 N°1是我的数据存储方式,N°2是我希望其存储在工作表2中的方式。
这个想法是让脚本在每次出现新行时都复制数据。
来自表单的数据。
这就是我想要的样子。
这是我的初始代码。
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`
谢谢!
答案 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
输入公式后,单元格上可能会出现红色三角形,请确保单击该单元格,然后单击“允许访问”按钮以使一个电子表格可以访问另一个电子表格。