You need to enable JavaScript to run this app. 使用Google Apps Script调用Clockify API修改项目预估报Duration解析错误
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Apps Script调用Clockify API修改项目预估报Duration解析错误

接口解析报错根因

报错触发的核心原因是提交的项目预估payload存在3处格式/类型不匹配,后端无法将对应值解析为合法的Duration对象:

  • estimate字段类型不符合要求:接口要求该字段为数值类型的秒数整数,既不接受带单位的时间格式字符串,也不接受字符串包裹的数字值。你当前传入的'3000'是字符串类型,后端序列化时无法完成Duration转换,直接抛出解析失败,这也是你测试'3000s'格式依然报错的原因——该字段根本不接受带单位的字符串值。
  • active字段类型错误:接口要求该字段为布尔值true/false,你传入的是字符串类型的"true",不符合结构定义。
  • resetOption字段格式错误:你传入的是字符串格式的"null",该字段为可选配置,不需要传带引号的空值。
可直接落地的修复步骤
  1. 调整estimate参数格式
    直接使用数值类型的秒数整数作为值,不要加单位、不要用引号包裹:比如要设置50分钟的时间预估,直接写数值3000,不要传'3000'、'3000s'这类带类型的字符串值。
  2. 修正payload结构匹配接口要求
    调整所有字段的类型为接口规定的格式,修复后的示例代码如下:
    // 修复后的Step2逻辑
    var estimate = 3000; // 数值类型,单位为秒,无引号
    var payload = JSON.stringify({
      "timeEstimate": {
        "estimate": estimate,
        "type": "MANUAL",
        "active": true, // 布尔值,无引号
        "resetOption": null // JSON原生null,无引号;不需要该配置可直接删除字段
      }
    });
    
  3. 排查代码内的拼写不一致问题
    检查全局配置变量名:Step1中请求头使用的是cifyHeader,Step2中请求头用的是cifyHeaders,两处变量名不一致会导致鉴权请求失败,需保证全局配置的变量名完全统一。
对接电子表格读取的适配方案

后续恢复M3单元格的读取逻辑时,注意两点:

  • 直接读取单元格的数值类型值,不要手动转成字符串:
    var estimate = sheet.getRange("M3").getValue(); // 自动识别为数值类型
    
  • 确保M3单元格的存储内容为纯数字秒数,如果单元格存的是小时数,可直接做数值计算转成秒(如读取的小时值 * 3600),不要拼接带单位的文本字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 21:36:10