我有一个包含许多行的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! 从电子表格单元格中按名称运行脚本的方法是:
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]());
}
答案 0 :(得分:1)
你可以做的是:
range
是否为包含下拉列表的单元格。无需使用switch
即可轻松调用功能:
定义功能:
var a = {
"u2": function(){return "abc";},
"u1": function(){return "eft";}
};
按名称调用函数(示例):
Logger.log(a["u2"]());