如何配置Google Apps Script定时触发器:每周一8-24点每小时运行
设置Google Apps Script定时触发器(每周一8点至24点每小时运行)
一、自动触发器配置步骤
- 打开你的Google表格,点击顶部菜单栏「扩展程序」→「Apps脚本」进入脚本编辑器
- 点击左侧时钟样式的「触发器」图标
- 点击右下角「添加触发器」按钮,按以下参数配置:
- 选择要运行的函数:
mondaycurrentLiveLinks - 部署类型:「基于时间的触发器事件」
- 时间驱动类型:「小时计时器」
- 频率:「每周」
- 星期:「星期一」
- 小时范围:「8到23」(对应8:00至23:00每小时运行一次,覆盖需求中的8点到24点前的时段)
- 选择要运行的函数:
配置完成后,触发器会自动每周一按设定时段运行,无需手动启动。
二、修复原代码语法错误(原代码存在多处语法问题,需修正才能正常执行)
原代码缺少括号、引号闭合不全、对象语法错误,以下是修复后的完整可运行代码:
// 发送内容到Discord的函数 function postToDiscord(currentMessage) { // 替换为你的Discord Webhook地址 const url = "你的Discord Webhook URL"; const message = { content: currentMessage }; const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(message) }; const res = UrlFetchApp.fetch(url, options); } // 主执行函数:获取未发布链接并标记 function mondaycurrentLiveLinks() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName("Live Links"); // 定位到第一条未发布的链接单元格 const messageCell = ws.getRange(ws.getMaxRows(), 2) .getNextDataCell(SpreadsheetApp.Direction.UP) .offset(1, -1); const currentMessage = messageCell.getValue(); // 若单元格为空,直接终止执行 if(currentMessage === "") return; // 发送内容到Discord并标记为已发布 postToDiscord(currentMessage); messageCell.offset(0, 1).setValue("posted"); }
修复说明:
- 补全了函数定义的大括号与语句分号
- 修正了对象字面量的语法格式,补充必要逗号
- 给Discord请求添加了
contentType和JSON.stringify,适配Webhook的JSON格式要求 - 格式化代码结构,提升可读性
三、备选方案(若触发器范围无法直接设置)
如果触发器配置时无法选择8-23的小时范围,可改为创建「每周一每小时运行」的触发器,再在主函数开头添加时间判断逻辑,确保仅在目标时段执行:
function mondaycurrentLiveLinks() { const now = new Date(); const day = now.getDay(); // 0=周日,1=周一,以此类推 const hour = now.getHours(); // 仅在周一8:00-23:59之间执行后续逻辑 if(day !== 1 || hour < 8 || hour > 23) return; // 以下保留原函数的核心逻辑 const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName("Live Links"); // ...其余代码不变 }
内容的提问来源于stack exchange,提问作者ultra_iinstinct1
相关产品推荐
相关产品推荐

