欢迎光临
我们一直在努力

Google appscript onEdit trigger中禁用jdbc、email等服务的解决方法

Google appscript onEdit trigger中禁用jdbc、email等服务的解决方法

google办公套件的强大之处就在于我们可以利用google自己的app script来给我们的表格、文档、表单增强功能,比如表格更新时发送邮件提醒、表格数据与我们自己的数据库同步等等,app script本身是基于java的,同时揉入了一些JavaScript的语法,编写起来也是很方便的。

今天在实现一个当编辑了spreadsheet之后,自动将更新后的单元格数据同步到远程的一张mysql表时 出现了问题。很简单的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function onEdit(e){
var range = e.range;
var rowNum = range.getRow();
var colNum = range.getColumn();
var id = range.offset(0,0-colNum+1).getValue();
....
if(id){
Logger.log("will do update:%s",id);
}else{
Logger.log("will do insert");
}
}
}

function getConnection(){
return Jdbc.getConnection(dbUrl, user, userPwd);
}

function updateOne(newRecord, id){
var conn = getConnection();
try{
var stmt = conn.prepareStatement("replace into samplestockupdated values (?,?,?,?)");
stmt.setInt(1,id);
stmt.setString(2,newRecord['Description']);
stmt.setInt(3,newRecord['StockHolding']);
stmt.setInt(4,newRecord['ItemValue']);
stmt.executeUpdate();
}catch(e){
Logger.log(e);
}finally{
closeConnection(conn);
}
}

但是调试的时候 stackdriver错误报告提示 “您没有调用 getConnection 的权限”

查看了google的文档才发现 原来onEdit函数属于simple trigger, 在修改单元格的时候会自动调用,simple trigger中不能使用jdbc 还有其他的一些较为高级的api

解决的方法其实很简单 只需要把onEdit改成另外一个函数名  比如我改成了onEditTrigger 然后手动添加一个高级触发器就可以了 如下图

google sheets如何添加触发器

google sheets如何添加触发器

 

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » Google appscript onEdit trigger中禁用jdbc、email等服务的解决方法
分享到: 更多 (0)

相关推荐

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址