谷歌脚本:有没有办法让多个列的getRange不相邻

时间:2017-08-06 17:43:09

标签: google-apps-script

我正在尝试在工作表中获取多个列并将其复制到另一个中。 使用getRange function,有没有办法获取和复制(例如): Col1,Col3,Col7? (而且我真的很高兴为此使用查询...)

谢谢!

1 个答案:

答案 0 :(得分:4)

要使用它,您只需将要复制的列放入这样的数组[1,3,7],并将其作为copyColumns函数的第一个参数。为了方便它的使用,创建一个中间函数使您不必在代码中执行此操作。但是这两个函数必须存在于您的代码中。

function copySelectedColumns()
{
  copyColumns([1,3,7],'mysrc','mydes');
}

function copyColumns(columns,src,dest)
{
  var columns=(typeof(columns)!='undefined')?columns:'';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName(src);
  var ds=ss.getSheetByName(dest);
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var uA=[];
  if(columns.length)
  {
    for(var i=0;i<vA.length;i++)
    {
      uA[i]=[];
      for(var j=0;j<vA[0].length;j++)
      {
        if(columns.indexOf(j+1)>-1)
        {
          uA[i][uA[i].length]=vA[i][j];
        }
      }
    }
    ds.getRange(1,1,uA.length,uA[0].length).setValues(uA);
  }
}