如何用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
相关产品推荐
相关产品推荐

