我使用大量的Google脚本代码构建了电子表格。它最初是一个个人电子表格和脚本,但更多人想要使用我的电子表格。我不想将谷歌脚本代码分享给其他人,但共享电子表格是可以的。
因此,我创建了一个单独的Google Script项目并发布了一个版本,并将该版本包含在电子表格中。这对我来说非常适合作为电子表格和脚本的所有者。
现在我已经分享了电子表格。人们制作工作表的自定义副本并尝试使用它。在工作表中运行函数时(引用库): 1)根据自定义库中的函数获取问题,为脚本提供正确的授权。 2)之后,Google发出错误:您无权访问脚本使用的库xxx,或者它已被删除。
因此,最终用户可以对工作表进行编辑,但自定义库仅适用于我。我可以通过将具有EDIT权限链接的任何人可用的自定义库发布来实现此目的。
有没有办法解决这个问题?脚本中的代码非常重要,以确保没有人可以看到那里发生了什么。
嗯让其他用户正确阅读,意味着他们可以访问我的源代码。会有没有选择来防止这种情况吗?例如,从外部源加载源代码?
赋予用户读取权限的另一个问题。我创建了两个自定义库,一个包含公共函数,另一个包含私有函数。公共函数库包含所有公共getter和setter。
因此在表格代码中有一个功能:
function GetInformation()
{
LKfunctions.GetInformation();
}
LKFunctions是公共图书馆。在公共图书馆中,我将私人图书馆列为LKfunctionsPrivate。所以公共图书馆的功能是:
function GetInformation()
{
var parsedData = LKfunctionsPrivate.getLK_JSON();
if (parsedData != "")
{
LKfunctionsPrivate.FillSettingsSheet(parsedData);
LKfunctionsPrivate.FillCastleSheet(parsedData);
}
}
当我执行该功能时,我收到错误: " ReferenceError:' LKfunctions'没有定义。 (第6行,文件' publicFunctions.gs'
这很奇怪,因为函数的publicFunctions具有以下内容: LKfunctionsPrivate.getLK_JSON();
那么当使用LKfunctionsPrivate时,脚本如何在LKfunctions上给出错误。当我调试时,我确实将该行编辑为LKfunctions.getLK_JSON();
很奇怪。
看起来这是独立的。我已将私有和公共函数库合并为一个。
一个问题。我在我的函数库中使用了一个名为Moment的外部库。 https://script.google.com/macros/library/versions/d/MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
包含我的库时,我必须在函数库上启用开发模式才能正常工作。当其他人使用我的脚本或我禁用开发模式时,我们收到错误消息: ReferenceError:"时刻"没有定义。 (第5行,文件"常数",项目"领主和骑士职能")
答案 0 :(得分:0)
以下示例供您测试并检查用户是否必须具有脚本源的编辑权限。 在电子表格中使用此示例:
//Library Project key : M_ZIuMRltotjhyMdhBDVG76tIT_UhbT9n
// choose stable version.
function test(){
testLib.searchUI();
}
它会在您的电子表格中创建一个小型用户界面...图书馆脚本可供有链接但没有人拥有链接的任何人查看