如何在Google Sheets中设置单元格永久触发器:实时价达标即永久设为Yes
解决Google Sheets中价格触发后永久标记及设置永久触发器的方案
一、实现“触发后永久设为yes”的逻辑
要实现只要实时价格曾等于触发价格一次,就永久将triggered设为yes,普通公式会随价格变化重新计算,无法保留状态,因此需要结合Google Apps Script实现:
基础实现脚本
假设实时价格在单元格A1,触发价格在B1,triggered状态在C1:
- 打开目标表格,点击菜单栏「扩展程序」→「Apps脚本」
- 删除默认代码,粘贴以下脚本:
function checkPriceTrigger() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const currentPrice = sheet.getRange("A1").getValue(); const triggerPrice = sheet.getRange("B1").getValue(); const triggeredStatus = sheet.getRange("C1").getValue(); // 仅当未触发过且当前价格匹配触发价时,设置为yes if (triggeredStatus !== "yes" && currentPrice === triggerPrice) { sheet.getRange("C1").setValue("yes"); } }
- 保存脚本(命名如
PriceTriggerChecker),关闭编辑器。
进阶:记录触发时间(可选)
如果需要记录第一次触发的时间,可添加辅助列(如D1),修改脚本为:
function checkPriceTriggerWithTime() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const currentPrice = sheet.getRange("A1").getValue(); const triggerPrice = sheet.getRange("B1").getValue(); const triggeredStatus = sheet.getRange("C1").getValue(); if (triggeredStatus !== "yes" && currentPrice === triggerPrice) { sheet.getRange("C1").setValue("yes"); sheet.getRange("D1").setValue(new Date()); // 记录触发时间 } }
二、设置永久触发器
要让脚本定期检查价格变化,需设置时间驱动的永久触发器:
- 回到Apps脚本编辑器,点击左侧「触发器」图标(时钟形状)
- 点击右下角「添加触发器」,按以下参数设置:
- 选择要运行的函数:
checkPriceTrigger(或你使用的进阶函数名) - 部署类型:「基于时间的触发器」
- 时间驱动类型:「分钟计时器」(根据价格更新频率选择,比如每1分钟/5分钟检查一次)
- 间隔:选择匹配价格更新频率的选项(如「每1分钟」)
- 时区:选择你所在的时区
- 选择要运行的函数:
- 点击「保存」,按提示完成脚本授权(首次授权需确认权限)。
注意事项
- 脚本中的单元格范围(
A1/B1/C1)需根据你的实际表格位置修改 - 触发器会永久运行,除非你手动删除;若价格更新频率较低,可适当调大检查间隔以节省资源
- 若实时价格通过
IMPORTDATA/GOOGLEFINANCE等函数自动更新,需确保触发器间隔不大于价格更新周期,避免漏检
内容的提问来源于stack exchange,提问作者Satyajit Kumthekar
相关产品推荐
相关产品推荐

