当前位置: 首页 > 知识库问答 >
问题:

移动过滤值(复制和粘贴值)使用谷歌工作表脚本,而忽略列标题/标题

谢海阳
2023-03-14

我想复制和粘贴值只从源表到目标表使用谷歌脚本。

我在列中应用了筛选器,因此我只希望复制存在/筛选的单元格(不是所有值)。

在我构建的示例中,我有:

源图纸(从中复制值):图纸1目标图纸(将值粘贴到):图纸2

第1张截图:

过程/步骤:

当我在A列的“Fav_颜色”中选择任何特定颜色时。。让我们说“黄色”。

现在,成员被相应地过滤。

在单击按钮时,我希望运行我的google脚本函数,复制过滤后的成员名称并将其粘贴到Sheet2中。

问题:在第2页:我得到了列标题/标题以及“成员名称”,而我只想要成员名称(而不是实际的列名)。

我确实知道这个问题,因为在我的代码中,我正在复制完整的B列,但我不知道如何排除列标题/标题。

function transfer() {
 var sss = SpreadsheetApp.getActiveSpreadsheet();
 var ss = sss.getSheetByName('Sheet1'); 
 var range = ss.getRange('A1:A'); 
 var data = range.getValues();

 var tss = SpreadsheetApp.getActiveSpreadsheet();
 var ts = tss.getSheetByName('Sheet2');
 ts.getRange('A:A').clearContent();

  ts.getRange('A:A').clearContent();
  ss.getRange("B:B").copyTo(ts.getRange("A2"), {contentsOnly:true});

}

共有1个答案

戚永福
2023-03-14

如果你使用,

ss.getRange("B2:B").copyTo(ts.getRange("A2"), {contentsOnly:true});

即使在过滤结果中不可见,它也总是从B2单元格中获取值

您可以使用Sheet#isRowHiddenByFilter获取第一个未筛选的行号

function copycolB() {
  var ss = SpreadsheetApp.getActive();
  var sourceSheet = ss.getSheetByName('Sheet1');
  var targetSheet = ss.getSheetByName('Sheet2');
  for(var row = 2; sourceSheet.isRowHiddenByFilter(row); ++row);//get first  visible row from row2
  var sourceRange = sourceSheet.getRange('B' + row + ':B');
  sourceRange.copyTo(
    targetSheet.getRange('A2'),
    {contentsOnly:true});
}
  • 工作表#isRowHiddenByFilter
 类似资料:
  • 我有一个电子表格从谷歌表单收集我的表单回复。 附在这张纸上的是一个脚本,它将每一行都拉出,进行一些计算,并将结果放入另一张纸中。我不是每次都复制整张表,而是用下面的代码拉两张表的增量: 问题是,我还将过滤器应用于接收工作表,并且每当我插入任何新数据时,过滤器范围都不会更新。 有什么办法可以让我绕过这件事吗?作为上面更新函数的一部分,我能否以编程方式更新过滤器范围?

  • 我的宏有一个问题,我从一个工作表(a)运行它,我需要从工作表(B)复制单元格并粘贴到工作表(C),但我只能使它改变工作表,有没有办法做到这一点而不激活工作表???

  • > 我正在尝试编写一个脚本,它将从一个工作表上的范围复制数据,并在B列的第一个空单元格中粘贴到另一个。我有一个脚本,可以将其粘贴到工作表中的第一个空单元格中这工作正常,但是我在列A中有一行静态的身份证号码,所以当它粘贴数据时,它就在工作表的下面。所以,我需要一种跳过列A并粘贴到列B中的第一个空单元格的方法。希望这有意义。 另一部分是B列中有时会有空单元格。所以它需要跳过这些来获得最后一个空单元格。

  • 我试图使用一个谷歌脚本,从检索2个证券字段,并将输出保存到Google Sheet文件。我还需要脚本将datetime添加到工作表的第一列。 我创建了一个包含3列的基本Google工作表: A的格式为DateTime。第1行中有列名称date,第2行之后为空 以下是我的功能: 以下是输出: C和D列的输出正确。A列输出错误。每次我运行该函数时,每一行都会在最后一行的上方添加: 我第一次运行该函数是

  • 我有3个谷歌工作表选项卡,所有相同的列,并想添加第四个选项卡,显示所有的数据从其他3个选项卡,其中列K="Q116"。 很容易从3张工作表导入所有数据:=查询({'Sheet 1'!A3:Q50;'Sheet 2'!A3:Q50;'Sheet 3'!A3:Q50}) 但是,我无法计算出如何添加过滤器/where子句来仅返回列K(在所有工作表中)='Q116'的结果。 有什么想法吗? 谢谢

  • 我已经创建了一个基于本教程的依赖下拉列表的谷歌表。我创建的工作表的副本。我对依赖下拉列表的功能很满意,但是我的目标是从“材料”表(列B: I)中复制一行中的所有数据,这些数据对应于从列E中的依赖下拉列表中选择的选项"crop_specific"表,将此信息复制到列E: L。我想保留当前脚本的功能,如果从D列中选择的内容发生更改,则清除E列中的内容,并将其扩展到整个行。任何帮助都将不胜感激。脚本的代