我有一些我一直使用的简单自定义功能。我最近遇到了一个我迫切需要使用它们的电子表格,但是当我尝试使用最基本的自定义函数时,我得到了“#NAME”。悬停文字“未知功能”。
即使删除所有其他代码,并尝试这个简单的功能,似乎也不起作用:
library(survey)
data(api)
## one-stage cluster sample
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
# you subset by all men, i subset by
y <- subset( dclus1 , yr.rnd == 'No' )
# you have actv_30 == 1 i have cnum == 1
# and your p040 is equivalent to stype
svymean(~factor(interaction( stype , cnum == 1 ) ),y)
当我复制电子表格时,随附的代码 DOES 可以正常工作。
一些注意事项:
这是Google Apps for Enterprise帐户。
我原本不是此电子表格的所有者,但后来成为了所有者,认为这可能是原因。
电子表格最初有受保护的区域,这些区域已被删除,认为这可能是原因。
这个电子表格与数百人共享,所以我真的想找到根本原因并修复它。
有什么想法吗?
答案 0 :(得分:3)
我无法解释确切的原因,但这里有一个解决方案:
答案 1 :(得分:1)
同样,在线程末尾,但这是我在此找到的唯一线程- 我的函数也运行良好,突然返回Unknown Function。 我发现签名已更改-最初,我有几个要发送的参数,而返回错误的单元格在函数调用中仍然有参数。该函数已经很长时间没有使用参数了。我删除了参数,瞧!显然,开始执行呼叫模式的地方发生了变化...
答案 2 :(得分:1)
我遇到了同样的问题。我在这里记录,什么对我有用。
要创建新自定义函数,我执行了以下操作:
=CustomFunctionName()
这奏效了。
现在,当我想在另一个电子表格中重用相同的内容时,有两种方法可以做到这一点。
Make Copy
写入自定义函数的工作表。#1 复制写入自定义函数的工作表。
这样,整个自定义函数代码就被复制了。因此,如果需要在自定义函数中进行任何更改,则必须在所有复制的文件中进行更改。 此外,一旦工作表被复制,自定义功能就不能简单地工作。 我不得不删除单元格并再次重新输入函数名称,以使它们工作。
#2 通过编写特定于特定工作表的自定义函数,制作自定义函数库并在其他工作表中重用它们。
这样更好,因为,核心逻辑将停留在一个地方。使用自定义函数的每个工作表只会编写包装函数。
要创建一个库:
使用图书馆:
+
按钮。库代码:
function SheetName() {
return SpreadsheetApp.getActiveSpreadsheet().getName();
}
function SayHello(name) {
return 'Hello ${name}';
}
比方说,在将此库包含到电子表格中时,我将标识符输入为 utility
。所以,在脚本编辑器中,我会这样写:
function SheetName() {
return utility.SheetName();
}
如何更新库并在电子表格中使用更新后的代码?
要更新库:
要使用更新的库:
Library
部分(左侧)中的库名称。Version
输入中选择最新版本号并点击“保存”。现在,您可以像以前一样调用新函数,现有函数将以新方式工作(如果现有函数有任何更改)。
答案 3 :(得分:0)
当您在工作表上有自定义函数时 - 它们是BOUND
到该工作表。因此,当您复制sheet
本身时,它确实有效,但它不会自动成为全局或域范围的自定义函数。
使用它的唯一方法就是在没有实际发布它作为插件的情况下去工具菜单,点击脚本编辑器并实际复制绑定到它使用的工作表的脚本中的代码,然后粘贴它在您要使用它的工作表的脚本编辑器中。
答案 4 :(得分:0)
对于OP来说为时已晚,但是如果这可以帮助其他人:
我遇到了类似的问题,我的电子表格突然停止识别已经使用了几个月的自定义功能。自从上次工作以来,最近没有对代码进行任何更改,并且甚至没有编辑过电子表格。当我去Tools > Script editor
时,它仍然显示带有自定义函数的代码。
重新加载页面并关闭并重新打开并不能解决该问题。我添加了一个简单的无参数包装函数,以使用一些适当的参数来调用自定义函数。
然后我在调试器中使用原始定制函数中的断点运行此包装器函数。遇到问题时,我切换回电子表格,它可以神奇地再次看到自定义功能。
答案 5 :(得分:0)
如果您已经作为附件发布,则需要通过以下步骤重新激活复印纸的附件:
答案 6 :(得分:0)
我遇到了完全相同的问题!我的代码运行良好,并正确链接到正确的电子表格。不幸的是,删除单元格的内容对我不起作用。
我发现的另一个解决方案是简单地重命名函数。
例如: “myFunction”重命名为“my_Function”,它对我有用!我想这可能是由于大量呼叫(在我的情况下超过 35 000)。也许它使它遇到错误或其他什么。 干杯!
答案 7 :(得分:0)
我创建了我的工作表的副本作为备份,并在晚上关闭。我早上回来时无法调用这些功能。所以我照例做了,从单元格中剪切函数并将其粘贴回原处。这通常是固定的。这次不行。 尝试重新打开浏览器,尝试重新登录。没有任何效果。 比我简单地在项目编辑器中重命名函数(在函数名称前面附加“调用”)并编辑工作表以匹配。它刚刚奏效。
答案 8 :(得分:-1)
另一个迟到的条目。此错误也可能是签名违规。如果传递给自定义函数的变量类型与预期不同,就会发生这种情况。我正在“清理”我的电子表格并重新格式化一些条目。这导致了找不到。如果您启用了提示功能,则可以轻松检测此错误。在我的例子中,我开始输入函数名称,它出现了(所以 Google 知道它在那里),但是在执行时我得到了错误。