我有一个脚本,其中定义了一个onEdit()函数,用于使用jdbc更新MYSQL数据库中的某些数据。 我已使用触发器UI设置此功能“onEdit”以运行“从电子表格”> “正在编辑”。
它在大多数情况下工作然后随机失败,并在日志中出现以下错误:
You do not have permission to call getConnection at [unknown function](Code:7)
第7行是:
var conn = Jdbc.getConnection("jdbc:mysql://xxxx", "xxx", "xx");
答案 0 :(得分:1)
我能够通过编程方式而不是通过UI创建Installable触发器来修复这种奇怪的行为。
function Initialize(){
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
var ss = SpreadsheetApp.getActive();
var builder = ScriptApp.newTrigger("onEditStatus")
.forSpreadsheet(ss)
.onEdit()
.create();
};
这修复了我的“你无权在”问题上调用getConnection。
答案 1 :(得分:0)
官方文档可能有助于了解此问题。 Apps脚本中的onEdit事件是受限制的事件,不会触发OAuth流。可能是由于性能原因或与Google Apps工作方式相关的其他技术困难。
这不是一个奇怪的行为。在文档(https://developers.google.com/apps-script/guides/triggers)的有关简单触发器的部分中,他们说:
他们无法访问需要授权的服务。例如,一个 简单触发器无法发送电子邮件,因为Gmail服务需要 授权,但简单的触发器可以将短语翻译为 语言服务,这是匿名的。
据我所知,最好的解决方案是可安装的触发器。