从多张纸复制行并删除

我不熟悉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)
      }
    }
  }
i530151196 回答:从多张纸复制行并删除

您需要一个嵌套循环来处理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)
      }
    }
  }
本文链接:https://www.f2er.com/3049554.html

大家都在问