从一列的最后一行复制到电子表格的末尾(每次都可变数字)
Copy from the last row of a column until the end of spreadsheet (variable number every time)
使用 google 应用程序脚本我需要从电子表格 #1 复制数据,将其带到电子表格 #2 的最后一行,然后复制最后一行中的公式 - 1(之前的行数数据已粘贴)来自电子表格 #2 我刚刚复制的数据的长度
我尝试了几种方法,但 none 效果很好。
对于下面的一个,我尝试在电子表格 #2 的单元格 N1 中插入一个公式,以便它显示将数据放入两个不同列的行数的差异。然后我告诉脚本将公式从 lastrow 设置为 lastrow + 该值。
当我 运行 脚本时,它复制了公式 19 次,但 N1 是 4 次。然后我尝试更正它并说: lastrow + N1-15 的值并且工作正常。
然而,下次我尝试插入 8 个值而不是 4 个时,它复制了公式 12 次。
function OrdenarRango() {
// SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PEDIDOS SIN ORDENAR").sort(5)
//Ordena los datos del rango según la columna E en orden descendente
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("PEDIDOS SIN ORDENAR");
var range = sheet1.getRange("A2:F");
range.sort({column: 5, ascending: false})
//Borra los valores del rango A2:D
var A = sheet1.getRange("A2:F").getValues();
var borrar = sheet1.getRange("A2:D").clearContent();
//Pega los valores en la última fila de PEDIDOS 2020
var ss1 = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1zF84h_gR0zHPqwobYyuOQlo50L2ktpZr2e4orMNtqE8/edit#gid=382646794');
var sheet2 = ss1.getSheetByName("PEDIDOS 2020");
var lastRow = sheet2.getLastRow() + 1;
var destRange = sheet2.getRange(lastRow, 1, A.length, A[0].length).setValues(A);
//Copia las fórmulas del rango
var rango = sheet2.getRange("N1").getValue()
var formulas = sheet2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
var destino = sheet2.getRange(lastRow, 10, lastRow+rango, 1);
destino.setFormulaR1C1(formulas)
}
我也试过这个,只复制一次公式:
var rango = sheet2.getRange("N1").getValue()
var formulas = sheet2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
for (i= 0; i<=rango; i++) {
var destino = sheet2.getRange(lastRow, 10, 1, 1);
destino.setFormulaR1C1(formulas)}
还有这个,它创建了一个无限循环:
var rango = sheet2.getRange("N1").getValue()
while (rango > 0) {
var formulas = sheet2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
var destino = sheet2.getRange(lastRow, 10, 1, 1);
destino.setFormulaR1C1(formulas)}
一开始我尝试插入类似于 A.length 的内容,但我不记得确切的代码。反正也没用。
代码有什么问题。如何解决?
Data before running the script
Data after running the script. I need to know the code for each product and the number
试试这个:
function OrdenarRango() {
var ss=SpreadsheetApp.getActive();
var sh1=ss.getSheetByName("sh1");
var range=sh1.getRange(2,1,sh1.getLastRow()-1,6);
range.sort({column: 5, ascending: false})
var A=sh1.getRange(2,1,sh1.getLastRow()-1,6).getValues();
var borrar=sh1.getRange(2,1,sh1.getLastRow()-1,4).clearContent();
var ss1=SpreadsheetApp.openByUrl('');
var sh2=ss1.getSheetByName("Sheet2");
var lastRow=sh2.getLastRow() + 1;
var destRange=sh2.getRange(lastRow,1,A.length,A[0].length).setValues(A);
var formulas=sh2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
var destino=sh2.getRange(lastRow,10,sh2.getLastRow()-lastRow+1,1);
destino.setFormulaR1C1(formulas)
}
使用 google 应用程序脚本我需要从电子表格 #1 复制数据,将其带到电子表格 #2 的最后一行,然后复制最后一行中的公式 - 1(之前的行数数据已粘贴)来自电子表格 #2 我刚刚复制的数据的长度
我尝试了几种方法,但 none 效果很好。 对于下面的一个,我尝试在电子表格 #2 的单元格 N1 中插入一个公式,以便它显示将数据放入两个不同列的行数的差异。然后我告诉脚本将公式从 lastrow 设置为 lastrow + 该值。
当我 运行 脚本时,它复制了公式 19 次,但 N1 是 4 次。然后我尝试更正它并说: lastrow + N1-15 的值并且工作正常。 然而,下次我尝试插入 8 个值而不是 4 个时,它复制了公式 12 次。
function OrdenarRango() {
// SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PEDIDOS SIN ORDENAR").sort(5)
//Ordena los datos del rango según la columna E en orden descendente
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("PEDIDOS SIN ORDENAR");
var range = sheet1.getRange("A2:F");
range.sort({column: 5, ascending: false})
//Borra los valores del rango A2:D
var A = sheet1.getRange("A2:F").getValues();
var borrar = sheet1.getRange("A2:D").clearContent();
//Pega los valores en la última fila de PEDIDOS 2020
var ss1 = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1zF84h_gR0zHPqwobYyuOQlo50L2ktpZr2e4orMNtqE8/edit#gid=382646794');
var sheet2 = ss1.getSheetByName("PEDIDOS 2020");
var lastRow = sheet2.getLastRow() + 1;
var destRange = sheet2.getRange(lastRow, 1, A.length, A[0].length).setValues(A);
//Copia las fórmulas del rango
var rango = sheet2.getRange("N1").getValue()
var formulas = sheet2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
var destino = sheet2.getRange(lastRow, 10, lastRow+rango, 1);
destino.setFormulaR1C1(formulas)
}
我也试过这个,只复制一次公式:
var rango = sheet2.getRange("N1").getValue()
var formulas = sheet2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
for (i= 0; i<=rango; i++) {
var destino = sheet2.getRange(lastRow, 10, 1, 1);
destino.setFormulaR1C1(formulas)}
还有这个,它创建了一个无限循环:
var rango = sheet2.getRange("N1").getValue()
while (rango > 0) {
var formulas = sheet2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
var destino = sheet2.getRange(lastRow, 10, 1, 1);
destino.setFormulaR1C1(formulas)}
一开始我尝试插入类似于 A.length 的内容,但我不记得确切的代码。反正也没用。
代码有什么问题。如何解决?
Data before running the script
Data after running the script. I need to know the code for each product and the number
试试这个:
function OrdenarRango() {
var ss=SpreadsheetApp.getActive();
var sh1=ss.getSheetByName("sh1");
var range=sh1.getRange(2,1,sh1.getLastRow()-1,6);
range.sort({column: 5, ascending: false})
var A=sh1.getRange(2,1,sh1.getLastRow()-1,6).getValues();
var borrar=sh1.getRange(2,1,sh1.getLastRow()-1,4).clearContent();
var ss1=SpreadsheetApp.openByUrl('');
var sh2=ss1.getSheetByName("Sheet2");
var lastRow=sh2.getLastRow() + 1;
var destRange=sh2.getRange(lastRow,1,A.length,A[0].length).setValues(A);
var formulas=sh2.getRange(lastRow-1, 10, 1, 1).getFormulasR1C1();
var destino=sh2.getRange(lastRow,10,sh2.getLastRow()-lastRow+1,1);
destino.setFormulaR1C1(formulas)
}