用于将列值复制到其他工作表的Google应用脚本

时间:2015-02-19 12:03:45

标签: google-apps-script

我正在尝试编写一个谷歌应用程序脚本,以便我可以将主要报告表中的几列(C和D)复制到另一个表格,基于列M的值,如果它等于0 。

如下图所示: enter image description here

所以我想复制"姓名"和"品种"列进入另一张表格,其中"发芽%"列是0。

它可以是基于时间的触发器,每2小时运行一次,或者也可以运行onEdit。我试图使用OnEdit创建一个脚本,如下所示:

    function onEdit( e ){
      var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("germination");
      var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("watering");

        var data = sheetFrom.getDataRange().getValues();
        var target = new Array();// this is a new array to collect data
        for(n=0;n<data.length;++n){ // iterate in the array, row by row
          if (data[n][12]=="0"){ // if condition is true copy the whole row to target
            target.push(data[n]);// copy the whole row
           }//if
        }//for

        //Paste to another sheet from first cell onwards
        sheetTo.getRange(1,1,target.length,2).setValues(target);
}

但我在这个&#34;错误的范围宽度上得到错误,是15但应该是2(第25行,文件&#34;代码&#34;)&#34;

第25行是&#34; sheetTo.getRange(1,1,target.length,2)。setValues(target)&#34;

提前致谢。

1 个答案:

答案 0 :(得分:1)

getRange(1,1,target.length,2)方法中,您指定它只选择2列,将其更改为getRange(1,1,target.length,target[0].length)以选择列的数组长度。

更新: 要仅写入C和D,请将目标push()更改为:

target.push( [[data[n][2], data[n][3]] )