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

如何用Google Apps Script按条件对Google表格列做时间加减计算

Google Apps Script 实现条件判断的列时间加减方案

以下脚本可直接在Google表格配套的Apps Script环境中运行,完全匹配需求规则:

function adjustTimeByCondition() {
  const activeSheet = SpreadsheetApp.getActiveSheet();
  // 数据从第2行开始读取(跳过第1行表头),可根据自身表格结构修改起始行值
  const dataStartRow = 2;
  const totalDataRows = activeSheet.getLastRow() - dataStartRow + 1;
  // 批量拉取A-D列全量数据,减少接口调用提升运行效率
  const sourceData = activeSheet.getRange(dataStartRow, 1, totalDataRows, 4).getValues();
  const outputData = [];

  sourceData.forEach(row => {
    const originalTime = row[0];
    const tag = row[3];
    let finalTime = null;

    if (originalTime instanceof Date) {
      const thirtyMinMillis = 30 * 60 * 1000;
      switch(tag.trim()) {
        case "Depart To":
          finalTime = new Date(originalTime.getTime() + thirtyMinMillis);
          break;
        case "Arrive from":
          finalTime = new Date(originalTime.getTime() - thirtyMinMillis);
          break;
      }
    }
    outputData.push([finalTime]);
  });

  // 批量写入C列,统一设置时间格式为 时:分:秒
  activeSheet.getRange(dataStartRow, 3, totalDataRows, 1)
    .setValues(outputData)
    .setNumberFormat("hh:mm:ss");
}

使用方法

  • 打开目标Google表格,点击顶部「扩展程序」→「Apps Script」进入脚本编辑页
  • 清空编辑器默认生成的占位代码,粘贴上述脚本后点击保存按钮,按提示完成谷歌账号授权
  • 手动运行adjustTimeByCondition函数即可完成全量数据计算
  • 若需要编辑D列内容时自动触发计算,可在脚本编辑器左侧「触发器」菜单新建触发规则:触发函数选adjustTimeByCondition,触发来源选「电子表格」,触发事件选「编辑时」保存即可

适配调整说明

  • 若表格无表头、数据从第1行开始,将代码中dataStartRow的值改为1即可
  • 若需要调整时间展示格式,修改setNumberFormat方法内的格式字符串即可,比如要展示带日期的格式可改为yyyy-MM-dd hh:mm:ss
  • 脚本自动对D列的判断值做了去空格处理,避免单元格前后存在不可见空格导致判断失效
  • 仅当A列为表格可识别的标准日期/时间格式时才会执行计算,非时间格式的行会自动留空C列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:12:06