昨天,我发布了我的第一期(将不同工作表中的行存档,并在我想解压缩时将它们移到初始位置(到初始工作表)(谷歌工作表)),已经解决了(再次感谢,如果你正在读我)。
我通过以下代码完成了我的脚本(从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");
}
}
}
}
}因此,从现在开始,如果在Col3中提到了一个新的客户端,那么Col 23就会自动填写她的名字。,但我需要标准化脚本的这一部分,因为每个新员工都有自己的工作表(他的名字),对于每个员工的工作表,只要Col3被填充,我就需要在工作表的名称下自动填写Col23。
有没有人知道如何为伊莉莎和米里亚姆写剧本?
谢谢你的帮助!
发布于 2020-04-09 14:11:38
目标:
如果在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());
}
}参考文献:
https://stackoverflow.com/questions/61122033
复制相似问题