You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么HTML中调用google.script.run方法无法执行.gs后端代码

问题根因

google.script.run属于异步调用,发起请求后不会等待服务端代码执行完成就会继续执行后续代码。你当前的逻辑是调用saveImage后立刻执行google.script.host.close()关闭窗口,未完成的异步请求会被直接中断,导致服务端的saveImage函数根本没有被触发执行。

修复方案

修改HTML文件中的renderSignature函数,通过withSuccessHandler绑定回调,等服务端saveImage执行成功后再关闭窗口,同时添加错误处理逻辑方便排查问题:

function renderSignature(){
  $("#rendered").attr("src",$('#signature').jSignature('getData','default'));
  var bytes = document.getElementById('rendered').src;
  console.log(bytes);
  google.script.run
    .withSuccessHandler(function(){
      // 服务端执行成功后再关闭窗口
      console.log("save success");
      google.script.host.close();
    })
    .withFailureHandler(function(err){
      // 打印错误信息方便排查
      console.log("save error: ", err);
      alert("签名保存失败:" + err);
    })
    .saveImage(bytes);
  console.log("save request sent");
}

其他注意事项

  • 你的HTML末尾多了一个冗余的</script>标签,建议删除避免潜在解析问题
  • 可以给服务端saveImage函数添加执行日志,方便后续排查执行状态
  • 确认你使用的Google账号对ID为1jEC8R7tK_XTTRcjOboqq-MqW6Pkz_CE2的文件夹有编辑权限,文件夹如果被删除、权限变更或者ID修改也会导致保存失败
  • 如果需要后续使用签名链接,可以修改saveImage函数把newSignatureLink写入对应单元格存储

内容的提问来源于stack exchange,提问作者dorstr999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:39:03