我只想使用 Google 脚本将值从源工作表复制并粘贴到目标工作表。
我在列中应用了过滤器,因此我只想复制存在/过滤的单元格(不是所有值)。
在我构建的示例中,我有:
源工作表(复制值):Sheet1 目标工作表(将值粘贴到):Sheet2
Sheet1 屏幕截图:
流程/步骤:
当我在 A 列的“Fav_color”中选择任何特定颜色时……假设为“黄色”。
现在,成员会被相应地过滤。
单击按钮时,我希望运行我的 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});
}
最佳答案
问题:
如果您使用,
ss.getRange("B2:B").copyTo(ts.getRange("A2"), {contentsOnly:true});
it always bring the value from B2 cell even if it is not visible in filtered results
解决方案:
您可以使用 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});
}
引用文献:
关于javascript - 使用谷歌工作表脚本移动过滤值(复制和粘贴值),同时忽略列标题/标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789775/