我不熟悉Google中的JavaScript和脚本。我一直在研究Google Spreadsheet。我需要从多个工作表中复制行并将它们粘贴到“已关闭”工作表中,然后仅在B列中找到单词Cerrado时才从发现的工作表中删除它们。当我运行脚本时,它仅在工作表Material de Papeleria上运行,并且仅是第一行。如果找到Cerrado,它将复制并粘贴。我会手动运行此脚本。如何使它在所有页面和行上正确运行?
function deleteRow(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var tabs = [
'Mantenimiento',
'Material de papeleria',
'Transporte',
'Recursos para Eventos',
'Mobiliario',
'Material de Limpieza (e Higiene)'
];
var sh1=ss.getSheetByName('closed');
for (var i = 0; i < tabs.length; i++) {
var sheet=ss.getSheetByName(tabs[i]);
var range=sheet.getRange('A:AR').getValues();
if(range[i][1]=='Cerrado')
{
sh1.appendRow(range[i]);
sheet.deleteRow(i+1)
}
}
}
您需要一个嵌套循环来处理range
中的数据。变量i
跟踪您在tabs
数组中的位置。在range
中处理数据时重用它是没有意义的。
此外,您将需要以相反的顺序处理行,否则,在删除行时将导致行索引不匹配。
function deleteRow(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var tabs = [
'Mantenimiento',
'Material de papeleria',
'Transporte',
'Recursos para Eventos',
'Mobiliario',
'Material de Limpieza (e Higiene)'
];
var closedSheet = ss.getSheetByName('closed');
for (var i = 0; i < tabs.length; i++) {
var sheet = ss.getSheetByName(tabs[i]);
var range = sheet.getRange('A:AR').getValues();
for (var j = range.length-1; j >= 0; j--) {
if (range[j][1] == 'Cerrado') {
sh1.appendRow(range[j]);
sheet.deleteRow(j+1)
}
}
}