首页 > 解决方案 > 在 Google 表格中复制/粘贴的更快方法?

问题描述

我正在使用一张表为我们使用的材料创建标签,我设置了一张表来询问需要多少标签,然后制作多个副本,然后推入标签表布局之后的选项卡中。

这是示例表

到目前为止,我有一个脚本可以从示例标签表中获取每个单元格,然后将其复制到示例标签干净表中,然后删除任何空白行和空白单元格并向上移动。这需要很长时间,感觉这不是解决问题的最佳方法。您推荐的以最少的运行时间解决此问题的方法是什么?

以下是我现在拥有的脚本供参考:

  var spreadsheet = SpreadsheetApp.openById("xxxxxxxxxxxxxxx").getSheetByName("Example Labels Clean");
  spreadsheet.getRange('A:C').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('A1').activate();
  spreadsheet.getRange('Labels!A1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C1').activate();
  spreadsheet.getRange('Labels!A2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A2').activate();
  spreadsheet.getRange('Labels!A3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C2').activate();
  spreadsheet.getRange('Labels!A4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A3').activate();
  spreadsheet.getRange('Labels!A5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C3').activate();
  spreadsheet.getRange('Labels!A6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A4').activate();
  spreadsheet.getRange('Labels!A7').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C4').activate();
  spreadsheet.getRange('Labels!A8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A5').activate();
  spreadsheet.getRange('Labels!A9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C5').activate();
  spreadsheet.getRange('Labels!A10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A6').activate();
  spreadsheet.getRange('Labels!A11').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C6').activate();
  spreadsheet.getRange('Labels!A12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A7').activate();
  spreadsheet.getRange('Labels!A13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C7').activate();
  spreadsheet.getRange('Labels!A14').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A8').activate();
  spreadsheet.getRange('Labels!A15').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A9').activate();
  spreadsheet.getRange('Labels!A16').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C9').activate();
  spreadsheet.getRange('Labels!A17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A10').activate();
  spreadsheet.getRange('Labels!A18').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C10').activate();
  spreadsheet.getRange('Labels!A19').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A11').activate();
  spreadsheet.getRange('Labels!A20').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C11').activate();
  spreadsheet.getRange('Labels!A21').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A12').activate();
  spreadsheet.getRange('Labels!A22').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C12').activate();
  spreadsheet.getRange('Labels!A23').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A13').activate();
  spreadsheet.getRange('Labels!A24').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C13').activate();
  spreadsheet.getRange('Labels!A25').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A14').activate();
  spreadsheet.getRange('Labels!A26').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C14').activate();
  spreadsheet.getRange('Labels!A27').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A15').activate();
  spreadsheet.getRange('Labels!A28').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C15').activate();
  spreadsheet.getRange('Labels!A29').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A16').activate();
  spreadsheet.getRange('Labels!A30').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C16').activate();
  spreadsheet.getRange('Labels!B1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A17').activate();
  spreadsheet.getRange('Labels!B2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C17').activate();
  spreadsheet.getRange('Labels!B3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A18').activate();
  spreadsheet.getRange('Labels!B4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C18').activate();
  spreadsheet.getRange('Labels!B5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A19').activate();
  spreadsheet.getRange('Labels!B6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C19').activate();
  spreadsheet.getRange('Labels!B7').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A20').activate();
  spreadsheet.getRange('Labels!B8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C20').activate();
  spreadsheet.getRange('Labels!B9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A21').activate();
  spreadsheet.getRange('Labels!B10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C21').activate();
  spreadsheet.getRange('Labels!B11').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A22').activate();
  spreadsheet.getRange('Labels!B12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C22').activate();
  spreadsheet.getRange('Labels!B13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A23').activate();
  spreadsheet.getRange('Labels!B14').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C23').activate();
  spreadsheet.getRange('Labels!B15').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A24').activate();
  spreadsheet.getRange('Labels!B16').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C24').activate();
  spreadsheet.getRange('Labels!B17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A25').activate();
  spreadsheet.getRange('Labels!B18').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C25').activate();
  spreadsheet.getRange('Labels!B19').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A26').activate();
  spreadsheet.getRange('Labels!B20').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C26').activate();
  spreadsheet.getRange('Labels!B21').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A27').activate();
  spreadsheet.getRange('Labels!B22').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C27').activate();
  spreadsheet.getRange('Labels!B23').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A28').activate();
  spreadsheet.getRange('Labels!B24').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C28').activate();
  spreadsheet.getRange('Labels!B25').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A29').activate();
  spreadsheet.getRange('Labels!B26').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C29').activate();
  spreadsheet.getRange('Labels!B27').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A30').activate();
  spreadsheet.getRange('Labels!B28').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C30').activate();
  spreadsheet.getRange('Labels!B29').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A31').activate();
  spreadsheet.getRange('Labels!B30').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C31').activate();
  spreadsheet.getRange('Labels!C1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A32').activate();
  spreadsheet.getRange('Labels!C2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C32').activate();
  spreadsheet.getRange('Labels!C3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A33').activate();
  spreadsheet.getRange('Labels!C4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C33').activate();
  spreadsheet.getRange('Labels!C5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A34').activate();
  spreadsheet.getRange('Labels!C6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C34').activate();
  spreadsheet.getRange('Labels!C7').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A35').activate();
  spreadsheet.getRange('Labels!C8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C35').activate();
  spreadsheet.getRange('Labels!C9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A36').activate();
  spreadsheet.getRange('Labels!C10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C36').activate();
  spreadsheet.getRange('Labels!C11').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A37').activate();
  spreadsheet.getRange('Labels!C12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C37').activate();
  spreadsheet.getRange('Labels!C13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A38').activate();
  spreadsheet.getRange('Labels!C14').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C38').activate();
  spreadsheet.getRange('Labels!C15').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A39').activate();
  spreadsheet.getRange('Labels!C16').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C39').activate();
  spreadsheet.getRange('Labels!C17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A40').activate();
  spreadsheet.getRange('Labels!C18').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C40').activate();
  spreadsheet.getRange('Labels!C19').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A41').activate();
  spreadsheet.getRange('Labels!C20').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C41').activate();
  spreadsheet.getRange('Labels!C21').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A42').activate();
  spreadsheet.getRange('Labels!C22').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C42').activate();
  spreadsheet.getRange('Labels!C23').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A43').activate();
  spreadsheet.getRange('Labels!C24').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C43').activate();
  spreadsheet.getRange('Labels!C25').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A44').activate();
  spreadsheet.getRange('Labels!C26').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C44').activate();
  spreadsheet.getRange('Labels!C27').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A45').activate();
  spreadsheet.getRange('Labels!C28').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('C45').activate();
  spreadsheet.getRange('Labels!C29').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A46').activate();
  spreadsheet.getRange('Labels!C30').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  
  var sh = SpreadsheetApp.openById("xxxxxxxxxxxxx").getSheetByName("Example Labels Clean");
  var data = sh.getDataRange().getValues();
  var targetData = new Array();
  for(n=0;n<data.length;++n)
  {
    if(data[n].join().replace(/,/g,'')!=''){ targetData.push(data[n])};
  }
  sh.getDataRange().clear();
  sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
  
  var sheet = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxx").getSheetByName("Example Labels Clean");
  var lastRow = sheet.getLastRow(); 
  for (var i = 1; i < lastRow+1; i++)
  {
    if((sheet.getRange('A'+(lastRow-i+1)).getValue()) + ""=="")
    {
      sheet.getRange('A'+(lastRow-i+1)).deleteCells(SpreadsheetApp.Dimension.ROWS);
    }
    if((sheet.getRange('C'+(lastRow-i+1)).getValue())=="")
    {
      sheet.getRange('C'+(lastRow-i+1)).deleteCells(SpreadsheetApp.Dimension.ROWS);
    }
  }

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


使用批处理操作

您已经在程序中使用过一次批处理操作来定义和设置targetData. 在其他地方做同样的事情:

  • 基本上,copyTo()脚本顶部的所有单独调用都可以用一个getValues()then 进行setValues()
  • 最终 for 循环中的单个getRange()getValue()deleteCells()调用可以转换为循环的批处理操作。
  • 如果“Example Labels Clean”是同一张表,则无需将其保存到三个单独的变量spreadsheetshsheet

此外,activate()调用是不必要的,也会减慢执行速度。此方法对于在 UI 中选择范围很有用——可能与此脚本无关。

// This is unnecessary 
spreadsheet.getRange('A1').activate();
spreadsheet.getRange('Labels!A1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

// This is preferred
spreadsheet.getRange('Labels!A1').copyTo(spreadsheet.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

推荐阅读