我(user1)有一个连接到Cloud SQL实例的Apps脚本,如下所示:
var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://blah:instance1/foo")
它就像一个魅力。我试图将此脚本作为一个库共享,并可能在将来货币化。
当我以其他用户(user2)身份登录并将其添加为库时,当库运行尝试建立连接的函数时,它会失败:
Failed to establish a database connection. Check connection string, username and password.
所以看起来连接来自user2,即使执行连接的代码来自user1拥有的库。真的吗?除了将user2作为编辑器添加到我的Cloud SQL实例之外,还有什么办法可以实现这个功能吗?
答案 0 :(得分:1)
是的,这是预期的行为。由不同用户拥有的库并不重要。如果有效用户可以编辑数据库,则cloud-sql jdbc连接器仅授权连接。
为了解决这个问题,你可以改变这个"库"进入一个webapp,像你一样运行并分享给任何人,甚至匿名。它通过HTTP参数(GET或POST)接受对数据库的查询和命令。此网络应用将使用ContentService中任意text formats available上的{{3}}返回结果。我想最容易的是JSON,因为您可以在Apps脚本上使用常规js对象,然后只需JSON.stringify
和JSON.parse
进行通信。
为了简化操作,您可以创建一个库来访问此Web应用程序,抽象出您在第一个脚本上的UrlFetch
调用和参数,从而轻松实现" native"插件由其他脚本。