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

如何检测Google Sheets触发器上次执行是否失败并自动重试?

Google Sheets 定时任务失败重试方案

核心思路

通过在原任务中记录执行状态,搭配定时检测脚本读取状态并触发重试,解决网络或站点繁忙导致的执行失败/超时问题。

具体实现步骤

1. 新增状态记录工作表

在你的Google Sheets里新建一张名为ExecutionLog的工作表,表头设为:执行时间、状态(成功/失败/超时)、重试次数。

2. 修改原任务代码,加入状态记录

在原代码的首尾和异常捕获部分添加日志写入逻辑:

function originalTask() {
  const logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ExecutionLog');
  const now = new Date();
  let status = "成功";
  let retryCount = 0;

  try {
    // 原有的任务代码(比如批量API调用等逻辑)
    // ...

    // 执行成功后写入日志
    logSheet.appendRow([now, status, retryCount]);
  } catch (e) {
    // 判断异常类型
    if (e.message.includes("Timeout") || e.message.includes("超时")) {
      status = "超时";
    } else {
      status = "失败";
    }
    // 写入失败/超时日志
    logSheet.appendRow([now, status, retryCount]);
    throw e; // 保留异常,不影响触发器的错误追踪
  }
}

3. 编写检测重试脚本

创建新函数,检查最近一次任务状态,满足条件则触发重试:

function checkAndRetry() {
  const logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ExecutionLog');
  const lastRow = logSheet.getLastRow();
  if (lastRow < 2) return; // 无日志记录直接返回

  const lastLog = logSheet.getRange(lastRow, 1, 1, 3).getValues()[0];
  const lastStatus = lastLog[1];
  const lastRetryCount = lastLog[2];
  const maxRetryTimes = 3; // 限制最大重试次数,避免无限循环

  // 符合重试条件则执行
  if ((lastStatus === "失败" || lastStatus === "超时") && lastRetryCount < maxRetryTimes) {
    try {
      originalTask();
      // 重试成功后更新日志状态和重试次数
      logSheet.getRange(lastRow, 2).setValue("成功");
      logSheet.getRange(lastRow, 3).setValue(lastRetryCount + 1);
    } catch (e) {
      // 重试失败,仅更新重试次数
      logSheet.getRange(lastRow, 3).setValue(lastRetryCount + 1);
    }
  }
}

4. 设置检测触发器

打开脚本编辑器,点击「编辑」→「当前项目的触发器」,新增触发器:

  • 选择函数:checkAndRetry
  • 事件源:时间驱动
  • 类型:分钟计时器
  • 间隔:每15分钟

注意事项

  • 配额限制:Google Apps Script有每日运行时间配额,需控制重试次数,避免触发配额预警。
  • 日志清理:定期清理ExecutionLog的旧记录,防止工作表过大影响性能。
  • 异常扩展:可根据实际API返回的错误类型,细化status的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:35:25