谷歌应用程序脚本中的CopyTo将无法在1000多行

时间:2018-03-21 21:45:55

标签: google-apps-script google-sheets

我使用originalRange.copyTo(rangeToCopyTo)基本上下拉了我拥有的数据行数的函数。 CopyTo适用于较少数量的数据行,但是当我获得具有1000个结果的大型报表时,它无法完成。它看起来像是拉下数据但实际上并没有正确地填充单元格,它们是空白的。我尝试过使用SpreadsheetApp.flush(),但这不起作用,我也尝试在使用Utilities.sleep(some value in ms)调用后直接让程序休眠。我被困了一段时间,所以任何帮助将不胜感激。谢谢。 Picture of spreadsheet functionality I'm trying to create

红色框是我的原始范围,那些单元格中充满了向左引用数据的公式(我必须滚动,因此一些数据在屏幕左侧与行号一起显示)。蓝色框是我向下拖动到底部的范围(有1000行,所以想象一下蓝色框向下延伸1000行)。 G列右侧的绿线仅从3行开始,因为它是从模板表复制的。所以,因为我看到线已经一直延伸到底部我知道函数几乎正常工作它只是没有填充我需要它的所有公式,然后转移到下一张表,所以它被跳过并留空。

function autoFillReport(sheet) {
  var rowsInSheet = sheet.getRange("A5:A").getLastRow();
  
  //get last row number of data
  var labelColumn = sheet.getRange("A5:A").getValues();
  var lastRowOfData;
  for (var i = 0; i < rowsInSheet - 4; i++) {
    if (labelColumn[i].toString().length < 1) {
      lastRowOfData = i + 4;
      break;
    };
  };
  
  //get last row number of rank formulas
  var trafficRankColumn = sheet.getRange("H5:H").getValues();
  var lastRowOfFormulas;
  for (i = 0; i < rowsInSheet - 4; i++) {
    if (trafficRankColumn[i].toString().length < 1) {
      lastRowOfFormulas = i + 4;
      break;
    };
  };
  
  //autofill remaining rows with rank formulas
  if (lastRowOfFormulas < lastRowOfData) {
    var originalRange = sheet.getRange("G5:L5");
    var targetRange = sheet.getRange("G5:L" + (lastRowOfData));
   // originalRange.copyTo(targetRange);
    originalRange.autoFill(targetRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
    runRemainingFormulas = true;
  };
};

1 个答案:

答案 0 :(得分:0)

您要复制公式吗?试试这个

Dim chomonth As Integer

   chomonth = InputBox("Insira o mes ", "Inserir dados")

   Dim counter As Integer
   Dim rng As Range
   Dim rw As Range
   Dim cell As Range

   Set rng = Range("S3:S9999")

    For Each rw In rng.Rows

        If month(rw.row) = chomonth Then
          //Code that copies AArw to worksheet 2 goes here

        counter = counter + 1



        End If

    Next rw

    MsgBox ("Numero de entradas:" & Count)

这应该将公式一直复制到工作表的最后一行。 &#39; getRange()&#39;方法接受表示左上方单元格(G7 - 第5行,第7列)和最右下方单元格(最后一行,第6列)的坐标。