gpt4 book ai didi

javascript - 从多个工作表复制行并删除

转载 作者:行者123 更新时间:2023-11-30 19:05:57 24 4
gpt4 key购买 nike

我不熟悉 Google 中的 javascript 和脚本。我一直在研究 Google 电子表格。我需要从多张工作表中复制行并将它们粘贴到“已关闭”工作表中,然后仅当在 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)
}
}
}

关于javascript - 从多个工作表复制行并删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58998040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com