如何通过时间驱动触发器自动上传Google Sheets数据并以POST同步至网站?
Google Sheets数据转JSON并自动POST上传(Google Apps Script实现)
首先明确:Google Apps Script是服务器端运行环境,不支持浏览器端的XMLHttpRequest对象,官方推荐用UrlFetchApp来发送HTTP请求,这也是替代Ajax实现跨域上传的稳定方案。
一、核心代码实现
1. 读取Sheet数据并转为JSON格式
假设你的工作表表头在第一行,数据从第二行开始:
function getSheetJson() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // 替换为你的工作表名称 const [headers, ...rows] = sheet.getDataRange().getValues(); // 把每行数据映射为JSON对象 const jsonData = rows.map(row => { return headers.reduce((obj, header, index) => { obj[header] = row[index]; return obj; }, {}); }); return JSON.stringify(jsonData); }
2. 发送POST请求上传JSON
function uploadData() { const targetUrl = "https://your-website.com/api/upload"; // 替换为你的目标接口地址 const payload = getSheetJson(); const options = { method: "POST", contentType: "application/json", payload: payload, // 如果接口需要身份验证,在这里添加请求头,示例: // headers: { // "Authorization": "Bearer YOUR_TOKEN" // } }; try { const response = UrlFetchApp.fetch(targetUrl, options); console.log("上传成功:" + response.getContentText()); } catch (err) { console.error("上传失败:" + err.message); } }
二、设置时间驱动触发器实现自动化
- 在Google Apps Script编辑器左侧,点击时钟图标打开触发器面板
- 点击「添加触发器」,配置以下参数:
- 选择函数:
uploadData - 事件源:时间驱动
- 时间类型:根据需求选择(比如「日计时器」设置每天固定时间,或「小时计时器」每小时运行一次)
- 完成配置后点击保存,按提示完成权限授权
- 选择函数:
常见问题排查
- 确保目标接口支持
application/json格式的请求体,若接口要求表单格式,需修改contentType为application/x-www-form-urlencoded并调整payload格式 - 检查目标网站是否有IP白名单限制,若有,需添加Google Apps Script的服务器IP段(可通过
UrlFetchApp的请求日志查看请求IP) - 确认脚本有读取Google Sheets数据的权限,以及发送外部请求的权限
内容的提问来源于stack exchange,提问作者Smit shah
相关产品推荐
相关产品推荐

