如何创建Google App Script每日保存RSS内容至谷歌表格
修正后的Google Apps Script实现方案
针对你需要的功能,以下是修正并完善后的脚本,同时解决原代码中的错误:
功能实现说明
- 访问工作表"Sheet1":直接通过
getSheetByName定位目标工作表,避免重复调用提升效率 - 查找A列最后一行:使用
getRange("A:A").getValues().filter(String).length精准获取A列有内容的最后一行行号 - 插入IMPORTFEED公式:在A列最后一行的下一行插入RSS导入公式
- 添加当前日期:判断A2有内容后,在A1写入格式化后的当前日期
- 选择性粘贴(值保留):导入RSS后将公式结果转为静态值,避免每日更新覆盖历史数据
- 每日定时运行:通过Google Apps Script触发器设置每日22点执行
完整代码
function importDailyTrends() { // 1. 访问工作表"Sheet1" const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('Sheet1'); if (!sheet) return; // 防止工作表不存在报错 // 格式化当前日期(GMT+3时区) const currentDate = Utilities.formatDate(new Date(), "GMT+3", "dd/MM/yyyy"); // 2. 查找A列最后一行(包含内容的行) const lastRow = sheet.getRange("A:A").getValues().filter(String).length; const targetRow = lastRow + 1; // 公式插入的目标行 // 3. 插入IMPORTFEED公式 const rssFormula = `=IMPORTFEED("https://trends.google.com/trends/trendingsearches/daily/rss?geo=BR")`; sheet.getRange(targetRow, 1).setFormula(rssFormula); // 等待公式加载完成(根据RSS内容量可调整等待时间) SpreadsheetApp.flush(); Utilities.sleep(3000); // 5. 选择性粘贴为静态值 const dataRange = sheet.getRange(targetRow, 1, sheet.getLastRow() - targetRow + 1, sheet.getLastColumn()); dataRange.copyTo(dataRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); // 4. 当A2有内容时,在A1添加当前日期 const a2Value = sheet.getRange("A2").getValue(); if (a2Value !== "") { sheet.getRange("A1").setValue(currentDate); } }
设置每日定时运行
- 打开Google表格的脚本编辑器(扩展程序 > Apps 脚本)
- 点击左侧菜单栏的「触发器」图标(闹钟样式)
- 点击「添加触发器」按钮
- 配置参数:
- 选择要运行的函数:
importDailyTrends - 选择部署类型:「时间驱动」
- 选择时间触发类型:「日计时器」
- 选择时间间隔:「每天」
- 选择具体时间:「晚上10点到11点」
- 选择要运行的函数:
- 点击「保存」完成设置
内容的提问来源于stack exchange,提问作者polo
相关产品推荐
相关产品推荐

