在电子表格单元格中按名称运行脚本

问题描述:

我有一个sppreadsheet,每行有很多行 - 第二列有状态的单元格,例如:a010111101001和约30多个状态。在脚本中,我有一些与状态单元相同的函数。我只想要一个函数,它根据活动状态单元调用所有其他函数。现在我只有功能,从活动cel获取脚本的名称,如果能帮助我,我将非常感激。下面是代码,我有:在电子表格单元格中按名称运行脚本

function nameoffunc() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('123') 
    var row = ss.getActiveCell().getRow(); 
    var status = ss.getRange(row, 2).getValue(); 
    //value from status - is the name of function 
    //I search way to do something like this: 
    //run.scrpt(status); 
} 

更新: 在状态变量 - 值 “a00110000000000000”

function a00110000000000000(){ 
    var ss1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('123') 
    var result = ss1.getRange("C35"); 
    result.setValue(22) 
} 

function nameoffunc() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('123') 
    var row = ss.getActiveCell().getRow(); 
    var status = ss.getRange(row, 2).getValue(); 
    var a = { 
    "u2": function(){return status;}, 
    "as": function(){return "eft";} 
      }; 
Logger.log(a["u2"]()); 
} 

更新:谢谢@daniel! 运行由名字从电子表格单元格scripn的方法是:

function nameoffunc() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('123') 
    var row = ss.getActiveCell().getRow(); 
    var status = ss.getRange(row, 2).getValue(); 
    var a = { 
    "a00110000000000000": function(){ 
    var ss1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('123') 
    var result = ss1.getRange("C35"); 
    result.setValue(22) 
    }, 
    "as": function(){return "eft";} 
    }; 
Logger.log(a[status]()); 
} 

你可以做的是这样的:

  • 在一个小区,创建你的所有函数名
  • 创建的in-cell drop down listonEdit()功能来处理价值变化。
  • 在您的事件处理程序中,检查range是否为具有下拉列表的单元格。
  • 检查值并执行相应的功能。

轻松调用功能,而无需使用switch

定义函数:

var a = { 
    "u2": function(){return "abc";}, 
    "u1": function(){return "eft";} 
    }; 

按名称调用函数(例如):

Logger.log(a["u2"]()); 
+0

谢谢你的回答,但我不知道我的理解是否正确:我如何用“状态”变量的名称调用脚本?我尝试写状态而不是abc,但没有发生任何情况,名称状态下的funktion不起作用。请参阅更新,我做错了什么? – Davagaz

+0

已找到答案!非常感谢,@丹尼尔!在更新中回答 – Davagaz