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

Google Apps Script定时触发器调用API报错:Invalid argument: http://[object%20Object]

问题分析

报错里的http://[object%20Object]说明你传入API的URL参数实际是一个对象,而非字符串格式的有效URL。手动运行正常但定时触发器失败,核心原因是定时触发器的运行环境和手动/UI触发的环境存在差异:

  • 手动运行时,脚本可能依赖了UI交互(比如侧边栏输入、菜单触发时初始化的变量)来获取正确的URL;
  • 定时触发器属于无头执行环境,没有UI上下文,那些依赖UI初始化的变量会变成空对象或未定义,最终导致URL拼接错误。
解决方案
  • 修正URL获取逻辑,脱离UI依赖
    别从UI元素(比如侧边栏输入框)或仅手动运行时才初始化的全局变量里拿URL,改用更稳定的存储方式:

    // 推荐用脚本属性存储API地址,定时环境也能正常读取
    const apiUrl = PropertiesService.getScriptProperties().getProperty('API_ENDPOINT');
    

    你可以在脚本编辑器的「项目设置」→「脚本属性」里添加API_ENDPOINT键值对,把实际的API地址填进去。

  • 检查URL拼接代码,避免直接传入对象
    打开accessProtectedResource函数第43行,确认你传入的是字符串格式的URL,而非某个对象。比如别写fetch(apiConfig),要改成fetch(apiConfig.endpoint),确保取到的是对象里的URL属性值。

  • 加日志定位变量状态
    在getAllInvoicesFromExact函数开头加日志,看看定时运行时URL的实际值:

    function getAllInvoicesFromExact() {
      const targetUrl = // 你的URL获取逻辑
      console.log('定时触发时的API地址:', targetUrl);
      // 后续代码
    }
    

    触发定时任务后,去脚本编辑器的「查看」→「日志」里看输出,就能明确URL是没获取到还是变成了对象。

  • 确认授权状态
    手动运行时你已经完成授权,但定时触发器可能需要重新确认权限。手动执行一次定时任务对应的函数,确保OAuth授权流程走完(如果API需要授权的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11