[英]Run a script based on sheet names for different sheets depending on another script
昨天我发布了我的第一个问题( 存档不同工作表中的行并将它们删除到初始 position(到初始工作表),当我想取消归档(谷歌工作表)时)已经修复(再次感谢你正在阅读我) 。
我通过以下代码完成了我的脚本(从当在 Col3 中提到客户时,通过 PM 名称自动填写 Col23 或 W 开始)。
function onEdit(event) {
// assumes source data in sheet named Elisa-Miriam-Victor
// target sheet of move to named Archive
// getColumn with check-boxes is currently set to column 2 or B
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
// Archive a project with checked box from Archive Sheet
if((s.getName() == "Elisa"||s.getName() == "Miriam" )&& r.getColumn() == 2 && r.getValue() == true) { // copy past every time a new PM-sheet is added
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
// Unarchive a project from Archive sheet to respective owner
else if(s.getName() == "Archive" && r.getColumn() == 2 && r.getValue() == false) {
var row = r.getRow();
var nameColumn = 23;
var name = s.getRange(row, nameColumn).getValue();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName(name);
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
// When a client is mentioned in Col3, fill automatically Col23 or W by the PM name
{
var s = SpreadsheetApp.getActiveSheet();
var data = s.getRange("C9:C").getValues();
var data_len = data.length;
for(var i=8; i<data_len; i++) {
if(data[i][0].length == 0) {
s.getRange(i+1,23).setValue("");
} else {
s.getRange(i+1,23).setValue("Miriam");
}
}
}
}
}
因此,从现在开始,如果 Miriam 的工作表上在 Col3 中提到了一个新客户,那么 Col 23 会自动填上她的名字。 但是我需要规范这部分脚本,因为每个新员工都有自己的工作表(他的名字),并且对于每个员工的工作表,每当填写 Col3 时,我需要在工作表名称下自动填写 Col23。
例如,有人知道如何为 Elisa 和 Miriam 编写脚本吗?
谢谢您的帮助!
如果在 Col3 中添加了新客户端,请写下工作表的名称
您可以检查 Col23 的最后一行以查看它是否为空并复制工作表的名称。 仅当有人手动编辑 Col3 时才会发生更改。
这是一个例子。 您必须将其集成到您当前的代码中。
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var lastRow = s.getLastRow();
var col23 = s.getRange(lastRow, 23).getValue();
if (r.getRow() == lastRow && r.getColumn() == 3 && col23 == ""){
s.getRange(lastRow, 23).setValue(s.getSheetName());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.