Google apps script 将数据添加到范围的底部

Google apps script 将数据添加到范围的底部,google-apps-script,Google Apps Script,因此,我目前正在尝试设置一个简单的按钮,将数据从一个范围移动到另一个表中,以供将来参考。如果工作表中不包含任何信息,我会让它工作,但我想把所有的参考资料放在一张工作表中 有没有一种方法可以添加到数据范围的底部?这就是我现在拥有的 function Addvoucher() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var target_sheet = SpreadsheetApp.getAc

因此,我目前正在尝试设置一个简单的按钮,将数据从一个范围移动到另一个表中,以供将来参考。如果工作表中不包含任何信息,我会让它工作,但我想把所有的参考资料放在一张工作表中

有没有一种方法可以添加到数据范围的底部?这就是我现在拥有的

function Addvoucher() {
            var ss = SpreadsheetApp.getActiveSpreadsheet();
            var target_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Meta');
            var source_sheet = ss.getSheetByName("Tools");
            var source_range = source_sheet.getRange("B9:D9");
            var target_range = target_sheet.getRange("S3:U3");
                        
            var last_row = target_sheet.getLastRow();
            
          var target_range = target_sheet.getRange("S3" + (last_row + 1) + ":U3" + (last_row + 1));
          
            target_sheet.insertRowAfter(last_row);
          
            source_range.copyTo(target_range);

}
修改点:
  • 我认为在您的脚本中,如何修改
    target\u sheet.getRange(“S3”+(last\u row+1)+“:U3”+(last\u row+1)
    ”(S3”+(last\u row+1)+“:U3”+(last\u row+1)),如下所示

  • 例如,在当前脚本中,
    最后一行+1
    2
    “S3”+(最后一行+1)+“:U3”+(最后一行+1)
    变为
    S32:U32
    。在这种情况下,它必须是
    S2:U2
    。我认为这可能是你的问题的原因


  • 尝试这种方法后,问题是在该信息“块”左侧的其他列中有数据,因此这会被放在第100行,作为第一个可用行

    • 从您的回复中,我可以理解,在您的电子表格中,除了列“U”到“S”之外的列都有值,列“U”到“S”的最后一行与其他列不同
当以上几点反映到您的脚本中时,我建议修改如下

发件人: 致:
destSh.getRange(destSh.getLastRow()+1,1,numrows,numcols)。给您带来不便,我深表歉意。从您的问题中,我没有注意到在您的电子表格中,除了列“U”到“S”之外的列都有值,列“U”到“S”的最后一行与其他列不同。这是因为我的英语水平差。对此我深表歉意。所以我更新了我的答案。你能确认一下吗?如果这不是您期望的结果,我再次道歉。代码在If上返回语法错误(值[I]。every(e=>e.toString()!=“”){ line@liam戈尔感谢您的回复。对于给您带来的不便,我深表歉意。从您的回复中,我认为在您的情况下,您可能无法在脚本编辑器中启用V8运行时。如果是这样,请启用V8并再次测试。如果您不想使用V8,请将其修改为
values[I]。every(函数(e){return e.toString()!=“”)
。太好了!它工作得很好!是时候整理我的元页面了:)
var last_row = target_sheet.getLastRow();
var target_range = target_sheet.getRange("S3" + (last_row + 1) + ":U3" + (last_row + 1));
var last_row = target_sheet.getLastRow();
var values = target_sheet.getRange("S1:U" + last_row).getValues();
for (var i = values.length - 1; i >= 0; i--) {
  if (values[i].every(e => e.toString() != "")) {
    last_row = i + 1;
    break;
  }
}
var target_range = target_sheet.getRange("S" + (last_row + 1) + ":U" + (last_row + 1));