2017-05-22 143 views
1

我正在使用Google表格,其中我有一個人員列A中與列表名稱相關的列表。在B欄中,我有與他們相關聯的數據以複製到他們的工作表中。篩選並複製到工作表

I have created a sample here to show how it should look.我也有附加的代碼,技術上做我想要的。唯一需要注意的是,我仍然無法將名稱複製到列A中。另外,爲了使它工作,我必須手動選擇整個範圍,而不是使範圍保持靜態或動態(直到最後一行數據)。

如何更改下面的代碼(也在表格中)以滿足我的需求?下面的代碼假定名稱總是在列b中,並且複製包含該名稱的整個行而不是其旁邊的數據。

var ss=SpreadsheetApp.getActiveSpreadsheet(); 
var master = ss.getSheetByName('Home'); 
var colWidth = master.getLastColumn();// last used col in masterSheet 
var sheets = ss.getSheets();// number of sheets 

function onOpen() { 
    var menuEntries = [ {name: "Copy selected Rows to sheets", functionName: "copyRowsOnConditionV2"}, 
        ]; 
    ss.addMenu("Copy functions",menuEntries);// custom menu 
} 

function copyRowsOnConditionV2() { 
    var sheetNames = [];// array of existing sheet names 
    var sheets = ss.getSheets();// number of sheets 
    for(s=0;s<sheets.length;++s){sheetNames.push(sheets[s].getName())}; 

    var selectedfirstRow = ss.getActiveSelection().getRowIndex(); 
    var selectedHeigth = ss.getActiveSelection().getHeight() 
    var selectedFullRange = master.getRange(selectedfirstRow,1,selectedHeigth,colWidth); 
    var data = selectedFullRange.getValues(); 
    for(n=0;n<data.length;++n){ 
    if(data[n][1].length<16){ 

    var dest = ss.getSheetByName(data[n][1].toString().replace(/ /g,''));//find the destination sheet 
    Logger.log(data[n][1].toString().replace(/ /g,'')) 
    var destRange = dest.getRange(dest.getLastRow()+1,1);// define range 
    master.getRange(selectedfirstRow+n,1,1,colWidth).copyTo(destRange);// and make copy below last row 
    } 
    } 
} 

任何幫助,將不勝感激!

回答

1

您需要更改您在for循環中使用的索引。要引用表格中的第一列,請使用索引0.

for(n=0;n<data.length;++n){ 
    if(data[n][0].length<16){ //index 0 refers to column A 

    var dest = ss.getSheetByName(data[n][0].toString().replace(/ /g,''));//find the destination sheet 
    Logger.log(data[n][0].toString().replace(/ /g,'')) 
    var destRange = dest.getRange(dest.getLastRow()+1,1);// define range 
    master.getRange(selectedfirstRow+n,1,1,colWidth).copyTo(destRange);// and make copy below last row 
    } 
    } 
相關問題