如何在已打开的Gmail回复窗口插入插件建议回复?
解决Gmail Add-on插入建议到已打开回复窗口的问题
你的问题核心在于setGmailDraft()方法的设计:当已有打开的回复窗口(对应一个临时草稿)时,该方法不会覆盖或注入这个窗口,而是创建一个全新的独立草稿存入草稿箱。要实现直接插入已打开的回复窗口,需要改用更新现有草稿的API逻辑。
修改后的实现代码
function handleUseSuggestion(e) { // 优先检查是否存在已打开的回复窗口对应的草稿ID if (e.draftId) { // 获取当前打开的回复草稿 const existingDraft = GmailApp.getDraftById(e.draftId); // 更新草稿内容为建议文本,保留原收件人、主题 existingDraft.update(e.parameters.suggestion, existingDraft.getSubject(), existingDraft.getTo()); // 返回更新草稿的响应,内容会直接同步到已打开的回复窗口 return CardService.newUpdateDraftActionResponseBuilder() .setDraftId(e.draftId) .build(); } else { // 回复窗口未打开时,沿用原逻辑创建新回复草稿并打开窗口 const message = getCurrentMessage(e); const draft = message.createDraftReply(e.parameters.suggestion); return CardService.newComposeActionResponseBuilder() .setGmailDraft(draft) .build(); } }
关键说明
e.draftId的作用:当用户打开回复窗口时,Gmail会自动生成一个临时草稿,这个草稿的ID会通过事件对象e传递给Add-on,通过判断该参数是否存在,可精准区分两种场景。UpdateDraftActionResponseBuilder:这个API专门用于更新已存在的草稿,调用后会直接将新内容同步到对应的打开窗口中,不会创建新草稿。- 权限要求:确保你的Add-on的OAuth权限范围包含
https://www.googleapis.com/auth/gmail.modify,否则无法修改草稿内容。
内容的提问来源于stack exchange,提问作者Sam Henderson
相关产品推荐
相关产品推荐

