Google脚本:用于矩形网格的getValues()和setValues()

时间:2019-06-24 08:57:23

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

在Google表格中,当我将给定的a1注释存储到appendRow中时,我希望此附加行中的值显示在另一张表格上,同时保留其最初保存时的网格结构。

因此,从下面的代码中,应将appendedRow(11,5,1,5)中的数据设置为网格I5:J7。

可悲的是,我不熟练使用for循环和push() /数组,因此,非常感谢您的支持。

谢谢。

function Test() {
  var rs = SpreadsheetApp.getActiveSpreadsheet();
  var ss = rs.getSheetByName("Sheet");

  var tempArray = [ss.getRange(11,5,1,5)]
  var values = tempArray.getValues();

  ss.getRange('I5:J7').setValues(values);
}

1 个答案:

答案 0 :(得分:0)

Google Apps脚本文档的“参考”部分为您提供了简要说明和不同方法的示例。在

https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluesvalues

您会看到方法setValues(values)要求起点和终点范围的尺寸要匹配。因此,您不能将1x5范围粘贴到2x3范围中。

您可以做的是循环遍历目标范围的单元格,并为它们顺序分配一个来自原始范围的值-直到所有值都已传递或目标范围已满为止。您可以这样实现:

function Test() {
  var rs = SpreadsheetApp.getActiveSpreadsheet();
  var ss = rs.getSheetByName("Sheet");

  var values = ss.getRange(11,5,1,5).getValues();
  var destination=ss.getRange('I5:J7');
  var value=0;
  for(i=1;i<=3;i++)
  {
    for(j=1;j<=2;j++)
    {
      var cell=destination.getCell(i,j);
      if(typeof values[0][value] !== "undefined")
      {
        cell.setValue(values[0][value]);
      }
      value=value+1;
    }
  }  
}