如何在Google电子表格

时间:2016-05-18 19:46:22

标签: google-apps-script auto-populate

我在创建可以从单个主跟踪器电子表格填充多个工作表的脚本时遇到问题。更具体地说,主跟踪器电子表格具有一个名为结果的列,其中记录了客户端结果。我希望能够简单地在主跟踪器中输入结果,并使该值的条目触发在单独的工作表中创建新行,该工作表仅包含有关该单个结果的信息。

例如,在主表中我会输入"添加到等候名单"在结果列中,这将在另一个工作表中生成该记录的副本,该文件名为"客户端已添加到等待列表"中。我希望能够为大约5种不同的结果做到这一点。

目前,我已经为我的5个结果和5个标签中的每一个使用以下脚本来完成此任务,但我还没有成功:

function onEdit(event) {
  // assumes source data in sheet named Needed
  // target sheet of move to named Acquired
  // test column with yes/no is col 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Main Tracker" && r.getColumn() == 8 && r.getValue() == "Added to Waitlist") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Clients Added to Waitlist");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);
  }
}

每当我有上述一个以上的脚本条目时,只有第一个进入编辑器的工作,而其余的根本就没有。如果有些人可以帮助我解决这个问题,那就太好了。

1 个答案:

答案 0 :(得分:0)

您不能在脚本中使用多个onEdit函数。函数名称必须是唯一的。但是,您可以在函数中包含多个条件语句。

if (event.value == "Added to Waitlist") {
    // do something 
} 
if (event.value == "Another thing") {
    // do something else
} 

或者更好的是,使用a switch statement

switch (event.value) {
  case "Added to Waitlist":
    // do something
    break
  case "Another thing":
    // do something else
    break

请注意,event.value会为您提供编辑时输入的值;您无需在活动单元格上调用getValue即可获取它。

同样,r = event.source.getActiveRange();可能只是r = event.range;