Google 张 - 脚本; getRange getLastRow 复制到

Google Sheets - Script; getRange getLastRow copyTo

我正在重写一个每日跟踪器,它获取一行数据,并将其附加到第二行的最后一行 sheet 以获取历史数据。

var ss = SpreadsheetApp.getActiveSpreadsheet (); 
var source = ss.getRange ("TODAY_TRACKER!P2:T2"); 
var destSheet = ss.getSheetByName("DATA"); 
var destRange = destSheet.getRange(destSheet.getLastRow()+1,1); 
source.copyTo (destRange, {contentsOnly: true}); 

这只是将行复制到数据 sheet 上从 1,1 开始的最后一行。

我正在更新跟踪 sheet 以获取天数并制作 table 每周数据;我想将这行数据附加到同一 sheet.

上特定位置的最后一行
var source = ss.getRange("NEW_TTRACKER!J3:O3"); 

var destRange = ss.getRange(ss.getLastRow(7,10,1,6)+1,1);

source.copyTo (destRange, {contentsOnly: true}); 

这显然不行,我只是试一试

我正在尝试将第一行数据复制到第 7 列第 10 行 1 行 6 列。 然后接下来几天的后续行将排在最后一行的下方。

感谢您的帮助,在此先致谢。

它不起作用,因为您的 destRange 存在语法错误。首先,它缺少一个左括号,其次,您在 getRange 函数上添加了错误的语法。您使用的第一个参数不包括一些额外的方法来拉范围和获取范围的最后一行。同样使用 getLastRow() 将获取整个 sheet 的最后一行,因此如果您有任何其他数据低于所需范围,它也可能会计算在内。因此,我们可以通过获取范围内的数据值并使用长度来确定哪个子数组具有最后的数据并在移动到下一个空白行时将其用作参考来解决这个问题。

见下方代码

function copyDataArray() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var destSheet = ss.getSheetByName("NEW_TTRACKER");
  var source = destSheet.getRange("J3:O3");

  //Define the position of the last available data on the weekly section
  var lastrowonrange = destSheet.getRange("J7:J11").getValues().filter(String).length;

  //Selects the area whare to past the data based on the last available data
 var destRange = destSheet.getRange(lastrowonrange+7,10,1,6);
 source.copyTo(destRange, {contentsOnly: true});
};

我能够 运行 正确地在 destRange 上附加数据。