首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据不同的脚本运行基于工作表名称的脚本

根据不同的脚本运行基于工作表名称的脚本
EN

Stack Overflow用户
提问于 2020-04-09 13:15:00
回答 1查看 249关注 0票数 0

昨天,我发布了我的第一期(将不同工作表中的行存档,并在我想解压缩时将它们移到初始位置(到初始工作表)(谷歌工作表)),已经解决了(再次感谢,如果你正在读我)。

我通过以下代码完成了我的脚本(从Col3中提到客户端时开始,使用PM名称自动填充Col23或W)。

代码语言:javascript
复制
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。

有没有人知道如何为伊莉莎和米里亚姆写剧本?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-09 14:11:38

目标:

如果在Col3中添加了新的客户端,则写入工作表的名称

操作步骤:

您可以检查Col23的最后一行,查看它是否为空,并复制工作表的名称。只有当有人手动编辑Col3时,更改才会发生。

代码:

这是一个例子。您必须将其集成到当前代码中。

代码语言:javascript
复制
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());
 }
}

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61122033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档