【问题标题】:Trying to append a range to the last row of a separate sheet - Google Script尝试将范围附加到单独工作表的最后一行 - Google Script
【发布时间】:2019-12-20 02:29:20
【问题描述】:

我正在运行此函数,该函数从另一张表中保存模拟数据。这些范围是我要保存到另一张表的最后一行的数据。因此,例如,如果我今天 12 月 19 日运行 sim - 我希望将数据附加到我昨天 12 月 18 日运行的 sim 数据之后的最后一行。

问题:

1.它不会复制“B5:L6”的整个范围,而是复制 C5:G6 或类似的东西

  1. 它不会向下追加行,它会向下移动项目并将最后一个范围复制到第一行 IE 10,9,8,7 而不是 7,8,9,10

非常感谢任何方向

function saveSimData() {
  var ss = SpreadsheetApp.getActive();
  var s = ss.getSheetByName('Avery Sim 2.0');
  var destSheet = ss.getSheetByName("Test2");
  var simDataList = s.getRangeList(['B5:L6', 'B7:L8','B9:L10','B11:L12','B13:L14','B15:L16','B17:L18','B19:L20','B21:L22','B23:L24','B25:L26','B27:L28','B29:L30','B31:L32','B33:L34']);
  var simData = simDataList.getRanges();
  var numGames = s.getRange('N10').getValue();
  var lastRow = destSheet.getLastRow();
  for (var i=0;i<numGames;i++){
    destSheet.insertRowAfter(lastRow);
    simData[i].copyTo(destSheet.getRange(lastRow +1,2), {contentsOnly:true});
  }
}

【问题讨论】:

  • 能否请您编辑任何机密细节并与我们共享电子表格的副本?
  • 不,很抱歉,我不能。

标签: google-apps-script google-sheets


【解决方案1】:
function saveSimData() {
  var ss=SpreadsheetApp.getActive();
  var s=ss.getSheetByName('Sheet1');
  var ds=ss.getSheetByName("Sheet2");
  var simDataList=['B5:L6', 'B7:L8','B9:L10','B11:L12','B13:L14','B15:L16','B17:L18','B19:L20','B21:L22','B23:L24','B25:L26','B27:L28','B29:L30','B31:L32','B33:L34'];
  var oA=[];
  for(var i=0;i<simDataList.length;i++) {
    var vA=s.getRange(simDataList[i]).getValues();//get data from each range  
    for(var j=0;j<vA.length;j++) {
      oA.push(vA[j]);//append each row to output array
    }
  }
  ds.getRange(ds.getLastRow()+1,5,oA.length,oA[0].length).setValues(oA);
}

或者如果您希望使用 RangeList 代替:

function saveSimData() {
  var ss=SpreadsheetApp.getActive();
  var s=ss.getSheetByName('Sheet1');
  var ds=ss.getSheetByName("Sheet2");
  var sDL=s.getRangeList(['B5:L6', 'B7:L8','B9:L10','B11:L12','B13:L14','B15:L16','B17:L18','B19:L20','B21:L22','B23:L24','B25:L26','B27:L28','B29:L30','B31:L32','B33:L34']);
  var sRL=sDL.getRanges();
  var oA=[];
  for(var i=0;i<sRL.length;i++) {
    var vA=sRL[i].getValues();//get data from each  range  
    for(var j=0;j<vA.length;j++) {
      oA.push(vA[j]);//append each row to output array
    }
  }
  ds.getRange(ds.getLastRow()+1,5,oA.length,oA[0].length).setValues(oA);
}

【讨论】:

  • 这仍然会在另一张表的第一个打开行上生成 10 行 sim。我希望它们基本上被复制和粘贴,但每个日期都有不同数量的游戏。因此,如果有一种方法可以计算第一张表中非空白的行并将其发布到第二张表中的第一个开放行,那将是最佳的。感谢您的帮助!
  • 您使用诸如 simgamesfor each date 之类的术语,并且您说的行不是空白的,但您似乎不明白的是,您和我不共享相同的上下文,因为我没有您的电子表格。因此,如果您不能共享电子表格,那么您必须更具体地说明数据应该如何分发。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多