我已经尝试了在“stackoverflow”站点上找到的代码示例,这些示例与从字符串调用函数有关。它们似乎不适用于 Google App Script。我收到一个错误,将该“窗口”作为未定义的对象。
这是我要解决的情况。我有一个电子表格,它将有许多不同的工作表。其中一些工作表将具有在我编写代码时已知的名称。其他工作表的名称在我编写代码时并不确切(例如基于动态数据)。
当前文档告诉我“onEdit”事件处理程序的名称是“onEdit”。由于你的名字是独一无二的,我的结论是,在电子表格应用程序中只能有一个具有这个名字的例程。
由于这种情况(上图),我想降低“onEdit”函数的复杂性。我想编写“onEdit”例程,根据发生编辑事件的“工作表”的名称,对使用限定名称的子函数进行“动态”调用。
这是我想要纠正的“onEdit”例程的伪代码示例。
function onEdit(src)
{
var act_sheet = src.getActiveSheet();
var sheet_name = act_sheet.getName();
var rtn_name = "onEdit_sheet_".sheet_name;
if ( function_exists(rtn_name) )
{
window[rtn_name](srv)
}
}
我实际上尝试过类似的代码。在 google 环境中,“window”对象被标记为未知对象。
我应该使用的环境中是否还有其他“对象”名称?这在 Google Apps 脚本环境中是否可行?
另外,我知道“function_exists”例程的编写也是一个挑战。那将是我的下一个问题。我知道“typeof”操作,当我编码时它返回“string”
"if ( typeof rtn_name == function" ) .. "
给定字符串中包含的名称,有没有办法测试例程是否存在?
我知道我可以在“onEdit”例程中使用“静态”名称并对其进行硬编码。但是我想编写一次例程,而不必为我编写的每个新电子表格修改它。我不想编写非常复杂的“onEdit”例程,而是专注于为单个工作表编写和测试“onEdit”函数。
我了解浏览器环境中的 Javascript。Google 应用程序脚本环境对我来说更加神秘。我发现文档非常简洁,需要更全面的解释。有关 Google 应用程序脚本环境中存在哪些对象的任何其他信息都会有所帮助。
当然,我的第三步可能是编写一个“onEdit”例程,该例程根据与 Edit 事件关联的当前“范围”调度正确的子函数。
我是 Google Apps 脚本的新手。我正在寻找脚本解决方案。它可能可以在“Java”中完成,但这超出了我想要编码的范围。
我也是“stackoverflow”环境的新手。其中大部分对我来说似乎是个谜。(例如,我如何指定哪些标签应该与这个问题相关联?我怎么知道哪些标签可以分配给这个问题?如何将我的搜索限制在某些标签上?-我目前对“谷歌”感兴趣应用程序脚本”,当我在右栏中选择“javascript”按钮时,它会将我带到可能不适用于 google 脚本环境的 javascript 答案。在下面了解如何“分配”标签。我怎么知道哪些标签是无需猜测即可获得?
感谢所有和任何帮助。