我需要为我们的经理创建一个主表,其中只包含他们所在地区的活动(我有一个脚本可以满足我的需要)。这些工作表从我的主工作表中填充(并且不在同一工作簿中)。
当有新的提交时,我需要将行复制到适用的工作表。我的代码将它们全部转储到一张纸上,我不知道为什么。我假设我没有合适的条件,但是你怎么说"当这个经理"?我认为按行调用工作表ID就足够了,但我猜不是。
那么我是否必须为每位经理做一个if else声明?由于我有大约80名经理,这将变得乏味。
以下是我目前的代码。任何帮助或建议表示赞赏!
function moveRows(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Form Responses 1");
var data = sh.getDataRange().getValues();
// Grab the Headers
var headers = sh.getRange(1,1,1,sh.getLastColumn()).getValues();
var nameCol = headers[0].indexOf('Enter Your Name');
var candCol = headers[0].indexOf('Choose Candidate');
var typeCol = headers[0].indexOf('Merged Experience');
var docCol = headers[0].indexOf('Document Link');
var timeCol = headers[0].indexOf('Timestamp');
var subjectCol = headers[0].indexOf('Choose the Content Area');
var ratingsCol = headers[0].indexOf('Ratings Summary');
var accessCol = headers[0].indexOf('Access');
var activityCol = headers[0].indexOf('Copied to Activity Sheet');
var masterCol = headers[0].indexOf('Master Activity Sheet');
var target = [];
// Loop over the values line by line
for (var i = 0; i < data.length; i++) {
var row = data[i];
var name = row[nameCol];
var activity = row[activityCol];
var master = row[masterCol];
var candidate = row[candCol];
var type = row[typeCol];
var subject = row[subjectCol];
var ratings = row[ratingsCol];
var access = row[accessCol];
var guide = row[docCol];
var time = row[timeCol];
if (activity == "") { // if condition is true copy the whole row to target
target.push([time,name,candidate,subject,type,guide,ratings]);
Logger.log(target);
var ss2 = SpreadsheetApp.openById(master);
var sh2 = ss2.getSheetByName("Sheet1");
sh2.getDataRange().offset(sh2.getLastRow(), 0, target.length, target[0].length).setValues(target);
}
}
}
注意:我有一堆不同的脚本可以将行从一个标签页移动到另一个标签页,但我无法找到将其移动到多个工作簿中的任何内容。
答案 0 :(得分:0)
您可以做的是为每个管理器创建一个数组,用于复制数据的工作表。
var managerSheet = {
"manager1":"SheetAzerty",
"manager2":"SheetQwerty"
};
选择工作表:
var manager = "manager1"; //This is the value you retrieve
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(managerSheet[manager]);
斯特凡