谷歌表格每周自动复制数据脚本需求及问题排查
修复后的Google Sheets脚本实现
先梳理你原脚本的问题:
- 未定义
dataSheet变量,你调用了dataSheet.getLastRow()但从未声明这个变量,应该用你已经定义好的sheet - 直接用工作表全局的
getLastRow()获取绿色表格行数不准确,绿色表格是动态生成的,可能和工作表最后行不匹配,得过滤掉空行 - 写入紫色表格时,应该定位到紫色表格(AG列起始)的最后一行,而非整个工作表的最后行,避免干扰其他数据
修正后的代码:
function logWeeklyData() { // 获取目标工作表 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Profession_Sheet'); // 读取绿色表格(Y3:AE)的数据,过滤掉空行 const greenRange = sheet.getRange("Y3:AE").getValues(); const filteredData = greenRange.filter(row => row.some(cell => cell !== "")); // 找到紫色表格(AG列)的最后一行,确定写入起始位置 const purpleLastRow = sheet.getRange("AG:AG").getValues().filter(String).length + 1; // 将过滤后的数据追加到紫色表格(非空时才执行) if (filteredData.length > 0) { sheet.getRange(purpleLastRow, 33, filteredData.length, 3).setValues(filteredData); } }
每周自动运行设置
- 打开脚本编辑器,点击左侧「触发器」图标
- 点击「添加触发器」,配置如下:
- 选择函数:
logWeeklyData - 事件源:「时间驱动」
- 时间类型:「周计时器」
- 星期几:「周日」
- 时间窗口:选择你需要的晚间时段(比如「晚上8点到9点」)
- 选择函数:
内容的提问来源于stack exchange,提问作者Evgeniy Ivanov
相关产品推荐
相关产品推荐

