如何通过调度器自动运行Google Sheets中WordPress脚本,无需手动操作
解决方案:定时运行WordPress文章同步脚本
一、修改脚本适配无UI/定时运行场景
原脚本依赖活动表格会话和UI弹窗,定时运行时这些逻辑会失效,需要针对性调整:
1. 固定目标表格
替换所有SpreadsheetApp.getActiveSpreadsheet()为通过表格ID/URL直接打开,避免依赖活动会话:
// 从表格URL中提取ID,格式示例:https://docs.google.com/spreadsheets/d/[表格ID]/edit const SPREADSHEET_ID = "你的表格ID"; var ss = SpreadsheetApp.openById(SPREADSHEET_ID); // 或用URL打开:SpreadsheetApp.openByUrl("你的表格完整URL");
2. 切换到指定的「WordPress」工作表
修改setupSheet函数,确保操作的是目标工作表(不存在则自动创建):
function setupSheet() { var ss = SpreadsheetApp.openById(SPREADSHEET_ID); // 获取或创建名为"WordPress"的工作表 var sheet = ss.getSheetByName("WordPress"); if (!sheet) { sheet = ss.insertSheet("WordPress"); } ss.setActiveSheet(sheet); // 清空表格并设置表头 sheet.clear(); sheet.getRange('A1:D1').setValues([['Featured Image', 'Title', 'Updated', 'Post URL']]); sheet.getRange('A1:D1').setFontWeight('bold').setFontStyle('italic'); }
3. 移除UI依赖的错误提示
定时运行时无法弹出弹窗,将错误处理改为日志记录或邮件提醒:
catch(error) { // 记录错误到日志(脚本编辑器→查看→日志可查看) Logger.log("同步失败:" + error.toString()); // 可选:发送邮件提醒 // MailApp.sendEmail("你的邮箱地址", "WordPress同步脚本出错", error.toString()); }
4. 完整修改后的脚本
// 替换为你的表格ID const SPREADSHEET_ID = "你的表格ID"; function onOpen() { SpreadsheetApp.getUi() .createMenu('WordPress') .addItem('Get Posts', 'getPosts') .addToUi(); setupSheet(); } function setupSheet() { var ss = SpreadsheetApp.openById(SPREADSHEET_ID); var sheet = ss.getSheetByName("WordPress"); if (!sheet) { sheet = ss.insertSheet("WordPress"); } ss.setActiveSheet(sheet); sheet.clear(); sheet.getRange('A1:D1').setValues([['Featured Image', 'Title', 'Updated', 'Post URL']]); sheet.getRange('A1:D1').setFontWeight('bold').setFontStyle('italic'); } function getPosts(){ setupSheet(); let offset = 0; const per_page = 1; while ( (got=getPage(offset,per_page)) > 0 && got < 2 ) { offset += got; Logger.log('offset %s', offset); } } function getPage(offset,per_page) { var ss = SpreadsheetApp.openById(SPREADSHEET_ID); var sheet = ss.getSheetByName("WordPress"); var options = { 'method': 'get', "contentType" : "application/json", 'muteHttpExceptions': true } var apiHost = 'https://mywebsite.co.uk'; const url = apiHost + '/wp-json/wp/v2/posts?per_page='+per_page+'&offset='+offset; try { const response = UrlFetchApp.fetch(url, options); const data = JSON.parse(response) for (let i = 0; i < data.length; i++) { const row = offset + i + 2; sheet.getRange('A'+row).setValue(data[i].featured_image_url); sheet.getRange('B'+row).setValue(data[i].title.rendered); sheet.getRange('C'+row).setValue(data[i].modified); sheet.getRange('D'+row).setValue(data[i].link); } return data.length; } catch(error) { Logger.log("同步错误:" + error.toString()); } return 0; }
二、设置定时触发器
- 打开表格的脚本编辑器(扩展程序 → Apps脚本)
- 点击左侧「触发器」图标(闹钟形状)
- 点击「添加触发器」,配置参数:
- 选择运行函数:
getPosts - 事件源:时间驱动
- 时间类型:按需选择(如「日计时器」,设置每天固定时间运行)
- 选择运行函数:
- 保存并完成授权,触发器会在云端自动执行脚本,无需手动打开表格
内容的提问来源于stack exchange,提问作者hamd01
相关产品推荐
相关产品推荐

