如何在Google Apps Script中使用Gmail的getPlainBody数据发送POST请求
操作步骤
- 第一步:先修正原有Gmail邮件读取逻辑,原代码中
GmailApp.search()返回的是邮件线程列表,需要先提取对应线程的最新邮件,避免出现lastMessage未定义的报错 - 第二步:使用Google Apps Script内置的
UrlFetchApp类发送POST请求,把获取到的邮件正文作为参数传入请求体 - 第三步:根据目标接口要求配置请求头和参数格式,常见的有JSON和表单两种格式,按需选择即可
- 第四步:添加异常捕获逻辑,方便排查请求发送失败的问题
完整可运行代码示例
function sendEmailBodyToApi() { // --- 1. 搜索并获取邮件正文 --- // 替换引号内的内容为你实际的Gmail搜索条件,比如 from:xxx@xx.com subject:xxx const searchQuery = 'xxx'; // 搜索符合条件的邮件线程,第二个参数是起始位置,第三个是返回数量,这里取最新的1条 const threads = GmailApp.search(searchQuery, 0, 1); if (threads.length === 0) { Logger.log('未找到符合条件的邮件'); return; } // 取线程里的最新邮件 const messages = threads[0].getMessages(); const lastMessage = messages[messages.length - 1]; const emailBody = lastMessage.getPlainBody(); Logger.log('获取到的邮件正文:' + emailBody); // --- 2. 配置POST请求参数 --- // 替换为你实际的目标接口地址 const apiUrl = 'https://你的目标接口地址.com/xxx'; // 两种常见参数格式二选一,不需要的直接删除即可 // 格式1:发送JSON格式参数(绝大多数接口使用该格式) const payload = JSON.stringify({ // 这里的键名替换为你接口要求的参数名,比如content、data、email_body之类的 email_body: emailBody }); const options = { method: 'post', contentType: 'application/json', payload: payload, // 如果接口需要鉴权,在这里补充请求头即可,示例如下 // headers: { // 'Authorization': 'Bearer 你的接口token' // } }; // // 格式2:发送表单格式参数(如果接口要求x-www-form-urlencoded就用这个,替换上面的格式1代码) // const payload = { // // 键名替换为接口要求的参数名 // email_body: emailBody // }; // const options = { // method: 'post', // payload: payload // }; // --- 3. 发送请求并处理返回结果 --- try { const response = UrlFetchApp.fetch(apiUrl, options); // 获取接口返回的内容 const responseContent = response.getContentText(); Logger.log('请求发送成功,接口返回:' + responseContent); } catch (e) { Logger.log('请求发送失败,错误信息:' + e.toString()); } }
注意事项
- 首次运行脚本时会弹出权限申请提示,需要授权脚本访问你的Gmail和网络请求权限,正常授权即可
- 如果需要批量发送多封邮件的内容,修改
GmailApp.search的第三个参数返回更多线程,再循环处理即可
内容的提问来源于stack exchange,提问作者A good person
相关产品推荐
相关产品推荐

