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

Google Sheets自动排序问题:更新Dispensed Date后无法触发排序

解决Google Sheets按日期自动排序的问题

问题说明

我是新手,想让Google Sheets按日期自动排序。表格里G列用了WORKDAY公式,更新Dispensed Date后,Re-order Date(G列)会自动按工作日规则更新。需求是:更新Dispensed Date后,Re-order Date更新完成,整行自动按G列日期升序排序(最早日期在前)。

当前问题:设置的自动排序脚本只有手动修改G列时才触发排序;更新Dispensed Date导致G列自动更新时,不会触发排序,行位置保持不变。

当前使用的脚本

function autoSort(e) {
 const row = e.range.getRow()
 const column = e.range.getColumn()
 const ss = e.source
 const currentSheet = ss.getActiveSheet()
 const currentSheetName = currentSheet.getSheetName()

 if(!(currentSheetName === "ORDERPAD" && column === 7 && row >= 2)) return

 const range = currentSheet.getRange(2,1,currentSheet.getLastRow()-1,7)

 range.sort({column: 7, ascending: true})
}

function onEdit(e){
 autoSort(e)
}

解决方法

问题出在脚本的触发条件:原脚本只监测**手动修改G列(第7列)**的操作,而更新Dispensed Date所在列时,onEdit事件的触发列是Dispensed Date对应的列,不符合column ===7的判断,因此不会执行排序。

调整思路:把Dispensed Date所在列也加入监测范围,确保修改该列时同样触发排序逻辑。假设Dispensed Date在E列(第5列),修改后的脚本如下:

function autoSort(e) {
 const row = e.range.getRow()
 const column = e.range.getColumn()
 const ss = e.source
 const currentSheet = ss.getActiveSheet()
 const currentSheetName = currentSheet.getSheetName()

 // 监测ORDERPAD工作表、行号≥2,且修改的是Dispensed Date列(第5列)或Re-order Date列(第7列)
 if(!(currentSheetName === "ORDERPAD" && row >=2 && (column ===5 || column ===7))) return

 const range = currentSheet.getRange(2,1,currentSheet.getLastRow()-1,7)
 range.sort({column:7, ascending:true})
}

function onEdit(e){
 autoSort(e)
}

注意事项

  • 如果Dispensed Date不在第5列,把代码里的column ===5改成实际对应的列号(比如D列对应4,F列对应6)
  • 脚本保存后,直接修改Dispensed Date列内容,G列更新后整行会自动按G列升序排序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:05:04