复制阵列&使用循环粘贴它

时间:2018-04-22 16:44:49

标签: google-apps-script google-sheets spreadsheet

:定位

我必须复制一系列数据并将其粘贴到另一个电子表格/表格中。

CONTEXT

我设法以非常基本的模式构建脚本。在这些行下面,您将看到我的代码。

在我的代码中,我创建了变量Personas,并将范围“A2; D5”保存到Personas中。然后我将该数据粘贴在同一张表中的“F2:I2”范围内。

问题

我想改进那个Loop,因为这是一个非常简单的例子,只有4个值(4个柱子= A:D)。如果我必须处理30列,我应该输入30行代码 - 每列一个。

我怎样才能以更简单的方式处理它?<​​/ p>

感谢名单

function copyAndPasteIt(){

  var ssObjects = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Objects')
  var personas = ssObjects.getRange("A2:D5").getValues()

  Logger.log(personas)

  for(i=0; i<4; i++){

        ssObjects.getRange((2+i), 6).setValue(personas [i][0])        
        ssObjects.getRange((2+i), 7).setValue(personas [i][1])    
        ssObjects.getRange((2+i), 8).setValue(personas [i][2])
        ssObjects.getRange((2+i), 9).setValue(personas [i][3])

  }

}

1 个答案:

答案 0 :(得分:0)

您不需要为每个单元格使用循环,您可以使用&#39; getRange(row,column,numRows,numColumns)来获取数据范围&#39;: https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column-numrows-numcolumns

然后获取要粘贴数据的范围:

sheet.getRange(row, column, numRows, numColumns).setValues(array);

在这里你可以找到一个不同的例子(在性能方面也是如此)一次写一个单元,一次写一行或者一次写所有数据:

http://www.appsscript.it/articoli/scrivere-dati-su-uno-spreadsheet-in-modo-performante-con-google-apps-script/