【问题标题】:Run scripn by name from spreadsheet cell从电子表格单元格按名称运行脚本
【发布时间】:2016-01-22 19:12:47
【问题描述】:

我有一个电子表格,每一行都有很多行 - 第二列的状态单元格,例如: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]());
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    你可以这样做:

    • 在一个单元格上,创建一个包含所有函数名称的 in-cell drop down list
    • 创建一个onEdit() 函数来处理值变化。
    • 在您的事件处理程序中,检查range 是否是带有下拉列表的单元格。
    • 检查值并执行相应的函数。

    无需使用switch即可轻松调用函数:

    定义函数:

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

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

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

    【讨论】:

    • 感谢您的回答,但我不确定我是否理解正确:如何使用“状态”变量中的名称调用脚本?我尝试写状态而不是 abc,但没有发生任何事情,并且状态名称下的功能不起作用.. 请查看更新,我做错了什么?
    猜你喜欢
    • 2023-03-09
    • 2023-03-28
    • 1970-01-01
    • 2023-04-08
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多