首页 > 解决方案 > Google Apps 脚本将特定范围从任何选项卡复制到主工作表

问题描述

所以本质上,我想创建一个脚本,从一张纸上的特定范围内获取数据,并将其推送到主纸上,或者我称之为“永久”。每天都会创建新选项卡,并且在出现提示时,这些新选项卡上的指定范围也需要推送。当我尝试使用该脚本时,每个人都可以工作,除了在“永久”页面上粘贴数据时,这些行分开粘贴了许多行,而不是粘贴在最后一个空行中。我对编码非常陌生,并且肯定需要一些关于我搞砸的地方的指示。

 function onOpen(e) {
      var ui = SpreadsheetApp.getUi();
      // Or DocumentApp or FormApp.
      ui.createMenu('Push to Perpetual')
          .addItem('Push to Perpetual', 'Macro')
          .addToUi();
    }
      function Macro() {
      var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Extraction Log Perpetual")
      var s2 = SpreadsheetApp.getActiveSheet()
      var a=s.getLastRow()+1
      s2.getRange(3, 21, 5, 13).copyTo(s.getRange(a,1),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
    };

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


如果数据在实际行中粘贴了很多行,则意味着该工作表中还有其他内容导致 getLastRow() 跳到最后。您可以做的是从 A 列获取最后一行。

var a=s.getRange("A:A").getValues().filter(function(item){return item != ""}).length+1;

扩展 您从 A 列获取所有值,然后过滤掉没有任何值的单元格。然后得到数组的长度,加1这样就可以得到下一行了。


推荐阅读