如何用脚本复制Google Doc内容并粘贴至Gmail收件人栏
需求背景
- 存储邮箱列表的Google Doc内,所有邮箱按换行分隔,格式参考:
Email1@gmail.com Email2@gmail.com Email3@gmail.com ...
- 核心目标:在账号所属环境下运行脚本,发信时可快速把文档内所有邮箱填入Gmail收件人栏
- 方案优先级:优先使用Google Docs API实现,支持复制到剪贴板类的可行方案,不优先考虑终端输出类方案
- 现有基础代码:已实现读取文档内容、按换行拆分后用逗号拼接的基础逻辑
function grabText() { const documentID = 'mydocumentid'; return DocumentApp.openById(documentID).getBody().getText().split(/\n/).join(','); }
可落地实现方案
方案1:文档内自定义菜单一键复制邮箱(适配现有代码,改动最小)
你写的grabText()已经完成了核心的邮箱格式转换,只需要补充自定义菜单、空行过滤、操作提示逻辑,就可以在打开存邮箱的文档时,一键把所有处理好的邮箱复制到剪贴板,切到Gmail写信页直接粘贴到收件人栏即可。
操作步骤:
- 打开存储邮箱的Google Doc,点击顶部「扩展程序」-「Apps Script」进入脚本编辑页
- 替换原有代码为以下内容,将代码中
mydocumentid替换为你自己的文档ID - 保存脚本后首次运行按提示完成账号授权,重新打开文档后顶部会出现「邮箱工具」自定义菜单
// 文档打开时自动加载自定义菜单 function onOpen() { const ui = DocumentApp.getUi(); ui.createMenu('邮箱工具') .addItem('复制所有邮箱到剪贴板', 'copyEmails') .addToUi(); } function copyEmails() { const documentID = 'mydocumentid'; // 读取内容、过滤空行/首尾空格,拼接为Gmail收件人识别的逗号分隔格式 const emailList = DocumentApp.openById(documentID) .getBody() .getText() .split(/\n/) .map(item => item.trim()) .filter(item => item); const emailStr = emailList.join(','); // 输出带复制功能的轻量弹窗,点击即可完成复制 const copyHtml = ` <div style="padding:16px;min-width:250px;"> <p>已读取到${emailList.length}个邮箱地址,点击下方按钮即可复制:</p> <button onclick="navigator.clipboard.writeText('${emailStr}').then(()=>{document.getElementById('tip').innerText='复制成功,可直接粘贴到Gmail收件人栏'})" style="padding:8px 16px;cursor:pointer;">复制邮箱列表</button> <p id="tip" style="color:green;margin-top:12px;"></p> </div> `; DocumentApp.getUi().showModalDialog(HtmlService.createHtmlOutput(copyHtml), '邮箱复制工具'); }
使用提示:首次点击复制按钮时浏览器会请求剪贴板权限,选择允许即可,后续使用无需重复授权。
方案2:一键跳转Gmail写信页,自动填充所有收件人(无需复制粘贴)
如果想省去粘贴步骤,可以在上述菜单中新增一个选项,点击后直接打开Gmail写信页面,自动把所有邮箱填入收件人栏,直接写邮件内容即可发送。
只需要在onOpen的菜单配置里加一行菜单项,再补充对应函数:
// onOpen 内新增菜单项 // .addItem('打开预填收件人的Gmail写信页', 'openGmailCompose') function openGmailCompose() { const documentID = 'mydocumentid'; const emailStr = DocumentApp.openById(documentID) .getBody() .getText() .split(/\n/) .map(item => item.trim()) .filter(item => item) .join(','); // 拼接Gmail官方写信链接,预填收件人参数 const composeUrl = `https://mail.google.com/mail/?view=cm&fs=1&to=${encodeURIComponent(emailStr)}`; // 自动打开新标签页跳转 const jumpHtml = `<script>window.open('${composeUrl}');google.script.host.close();</script>`; DocumentApp.getUi().showModalDialog(HtmlService.createHtmlOutput(jumpHtml).setWidth(1).setHeight(1), '正在跳转至Gmail...'); }
内容的提问来源于stack exchange,提问作者Ch1orina7ed
相关产品推荐
相关产品推荐

