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
}
}
}
任何幫助,將不勝感激!