首页 > web前端 > js教程 > 应用程序脚本 - 列出所有填写您的Gmail的新闻通讯。选择性取消订阅变得容易

应用程序脚本 - 列出所有填写您的Gmail的新闻通讯。选择性取消订阅变得容易

Linda Hamilton
发布: 2025-01-27 00:33:09
原创
194 人浏览过

Apps Script - List all the newsletters filling up your Gmail. Selective unsubscribing got easy


淹没在过多的 Gmail 简讯中? 虽然过滤取消订阅链接是一种已知的解决方案,但本文解决了一个更复杂的问题:有效管理大量现有的新闻通讯订阅。

挑战

订阅时事通讯的数量之大可能会让人难以承受。 手动查看和取消订阅每一项是很乏味的。 这里的目标不是删除旧电子邮件,而是创建当前、独特的时事通讯发件人的精简列表,以便有针对性地取消订阅。 Gmail 本身缺乏简单的解决方案。

解决方案:Google Apps 脚本

Google Apps 脚本提供了答案。这个强大的工具可让您编写代码与各种 Google 服务交互,自动执行重复任务。 该脚本在不同平台上有大约 100 个时事通讯订阅,事实证明,该脚本在将列表减少为仅必需订阅方面具有无价的价值。

以下是复制此解决方案的分步指南:

  1. 创建 Google 表格:这将存储生成的新闻通讯发件人列表。
  2. 访问应用程序脚本:在您的 Google 表格中,导航至“扩展”>; “应用程序脚本。”
  3. 编写脚本:下面的脚本从 Gmail 检索新闻通讯发件人的唯一电子邮件地址及其姓名,并将它们整齐地组织在电子表格中。
  4. 保存并运行: 保存脚本,为其指定一个描述性名称,然后运行 ​​main 函数。 授权脚本访问您的 Gmail 和 Google 表格。
  5. 查看并取消订阅:电子表格将填充唯一的电子邮件地址。 使用此列表可以取消订阅 Gmail 中不需要的新闻通讯。

脚本分解:

该脚本包含两个主要功能:

  • main(): 此函数调用 _getUniqueMailingListSenders().
  • _getUniqueMailingListSenders(): 此函数采用三个参数:
    • searchOption:Gmail 搜索查询(例如,list:() 表示一般新闻通讯)。
    • title:要添加到电子表格列的标题。
    • clearSheet:一个布尔值,用于确定是否清除现有工作表。

则函数:

  1. 检索与搜索条件匹配的所有电子邮件线程。
  2. 使用 JavaScript Set 收集唯一的发件人电子邮件地址。
  3. 使用正则表达式提取发件人姓名。
  4. 将电子邮件地址和姓名存储在 Map 中。
  5. 动态地将列添加到 Google 表格,包括时间戳。
  6. 将唯一的发件人数据写入电子表格。
  7. 将进程记录到 Apps 脚本执行日志中以进行调试。

完整代码:

<code class="language-javascript">function _getUniqueMailingListSenders(
  searchOption,
  title,
  clearSheet = true,
) {
  const threads = GmailApp.search(searchOption);
  const senders = new Set();
  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      senders.add(message.getFrom());
    });
  });

  const emailData = new Map();
  senders.forEach((sender) => {
    const emailMatch = sender.match(/<([^>]+)>/);
    const email = emailMatch ? emailMatch[1] : sender;
    const name = sender.replace(emailMatch ? emailMatch[0] : '', '').trim();
    if (!emailData.has(email)) {
      emailData.set(email, name);
    }
  });

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  if (clearSheet) {
    sheet.clear();
  }
  const lastColumn = sheet.getLastColumn();
  const emailColumn = lastColumn + 1;
  const nameColumn = lastColumn + 2;
  const currentDate = new Date().toLocaleDateString();

  sheet.getRange(1, emailColumn).setValue(`${title} - Email - ${currentDate}`);
  sheet.getRange(1, nameColumn).setValue(`${title} - Name - ${currentDate}`);

  let row = 2;
  emailData.forEach((name, email) => {
    console.log(`Adding data on column (${emailColumn}, ${nameColumn}) and row ${row}: `, {email, name});
    sheet.getRange(row, emailColumn).setValue(email);
    sheet.getRange(row, nameColumn).setValue(name);
    row++;
  });
}

function main() {
  _getUniqueMailingListSenders(
    'list:()',
    'Unique Email Senders',
    false,
  );
}</code>
登录后复制

结论

Google Apps 脚本提供了一个强大的解决方案来管理大量的电子邮件订阅。该脚本简化了流程,允许高效审查和取消订阅不需要的新闻通讯。 探索 Apps 脚本以寻找其他潜在的自动化机会。

通过以下方式与我联系:

  • 网站
  • 领英
  • GitHub
  • X(推特)

以上是应用程序脚本 - 列出所有填写您的Gmail的新闻通讯。选择性取消订阅变得容易的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板