如何参考自定义(私有)库来共享电子表格

时间:2014-03-04 21:17:40

标签: google-apps-script google-sheets google-spreadsheet-api

我使用大量的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行,文件"常数",项目"领主和骑士职能")

1 个答案:

答案 0 :(得分:0)

以下示例供您测试并检查用户是否必须具有脚本源的编辑权限。 在电子表格中使用此示例:

//Library Project key : M_ZIuMRltotjhyMdhBDVG76tIT_UhbT9n 
// choose stable version.

function test(){
  testLib.searchUI();
}

它会在您的电子表格中创建一个小型用户界面...图书馆脚本可供有链接但没有人拥有链接的任何人查看

相关问题