Google Sheets定时触发函数:每日固化数据同步结果需求
Google Sheets 实现每日固定时间复制值并停止更新的方案
直接给你能落地的脚本方案,完全满足「每日固定时间把Current表C4的值复制到Daily表对应日期的C列,之后不再更新」的需求:
步骤1:添加脚本
- 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps脚本」
- 删除编辑器里的默认代码,替换成下面这段:
function copyDailyValue() { // 获取当前表格实例 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 读取Current表C4的当前值 const targetValue = ss.getSheetByName('Current').getRange('C4').getValue(); // 定位到Daily工作表 const dailySheet = ss.getSheetByName('Daily'); // 处理日期匹配(假设Daily表的A列是日期列,格式为yyyy-MM-dd) const today = new Date(); const todayStr = Utilities.formatDate(today, Session.getScriptTimeZone(), 'yyyy-MM-dd'); // 获取A列所有日期数据 const dateList = dailySheet.getRange(1, 1, dailySheet.getLastRow(), 1).getValues(); // 遍历找到今天的日期行,写入值到C列 for (let rowIndex = 0; rowIndex < dateList.length; rowIndex++) { const cellDateStr = Utilities.formatDate(dateList[rowIndex][0], Session.getScriptTimeZone(), 'yyyy-MM-dd'); if (cellDateStr === todayStr) { dailySheet.getRange(rowIndex + 1, 3).setValue(targetValue); break; } } }
- 点击编辑器顶部的「保存」按钮,给脚本起个名字(比如DailyValueCopy),按提示完成权限授权(需要允许脚本访问你的表格)
步骤2:设置每日定时触发
- 在Apps脚本界面,点击左侧菜单栏的时钟图标(「触发器」)
- 点击右下角的「添加触发器」,按以下设置:
- 选择要运行的函数:
copyDailyValue - 选择事件源:「时间驱动」
- 选择时间类型:「日计时器」
- 选择想要的运行时间(比如「晚上11点到凌晨1点」,对应当日结束前)
- 选择要运行的函数:
- 点击「保存」即可
这个脚本会在你设定的时间,自动把Current!C4的实际值(不是公式链接)写入Daily表中对应今天日期的C列单元格,之后这个单元格的数据就固定了,不会再随Current表变化,完美解决你的需求。
如果Daily表的日期列不是A列,或者日期格式不一样,只需要修改脚本里对应列的索引(比如日期在B列就把getRange(1,1,...)改成getRange(1,2,...)),以及日期格式化的字符串(比如你的日期是MM/dd/yyyy就改成'MM/dd/yyyy')。
内容的提问来源于stack exchange,提问作者Lambert Gingras
相关产品推荐
相关产品推荐

