如何使用 Gmail 中的标签来识别单个邮件而不是已由脚本处理的线程

2023-12-22

使用 google 邮件脚本,我尝试使用 API 将带有某些标签的新电子邮件上传到我们的 CRM。我无法检查邮件是否已上传,因此我必须在邮箱中为之前已处理过的邮件应用标签。

不幸的是,谷歌脚本只允许您在线程级别添加或检查标签。由于新消息可以在最后一次上传到 CRM 后进入线程,因此我不知道线程的哪些消息实际上已经被处理。

下面的代码包含了我的想法,函数 getLabels 不适用于 Message,但是它不起作用。

希望有人有一个聪明的解决方案!

Thanks

//execute main sequence
function collecttobesend() {
    var labeladd = GmailApp.getUserLabelByName("add to CRM");
    var labeladded = GmailApp.getUserLabelByName("added to CRM");
    //var threads = label.getThreads();
    var threads = GmailApp.search('label:added-to-crm -label:add-to-crm')

    for (var i = 0; i < threads.length; i++) {
        thread = threads[i];

        // get all messages in a given thread
        var messages = thread.getMessages();

        // iterate over each message
        for (var j = 0; j < messages.length; j++) {
            message = messages[j];
            var labels = message.getLabels();
            var messagehaslabeladded = false;

            for (var k = 0; k < labels.length; k++) {
                if (labels[k] = labeladded) {
                    messagehaslabeladded = true;
                }
            }

            // if message has not been added yet
            if (messagehaslabeladded = false) {
                var success = false;

                //add to CRM through API
                success = true;

                //if succesfull add label
                if (success = true) {
                    message.addLabel(labeladded);
                }
            }
        }
    }

Tricky.

我认为你的问题是双重的。

1) 如果线程在应用“添加到 CRM”标签后收到响应,则该新消息甚至不会触发检查是否需要添加,因为它永远不会应用“添加到 CRM”。

2)它将无法区分线程中已添加的消息和仍需要添加的消息。

这不是一个特别优雅的解决方案,但对于 1),有一个麻烦但可行的解决方案。您可以使用以下命令设置脚本来检查收件箱中的邮件.getInboxThreads() https://developers.google.com/apps-script/reference/gmail/gmail-app#getInboxThreads()检查类似的内容:

 // if message might have been updated
    if (messageHasLabelAdded == true && messageIsInInbox == True) {
       //Iterate through again to index the new messages
 }

每隔几分钟运行一次应该会捕获线程中的任何新消息,但它在很大程度上依赖于用户在完成消息后“存档”消息。

2) 您是否能够通过 CRM 获取/发布元数据?如果是这样,您始终可以使用以下方式获取消息 IDgetId() https://developers.google.com/apps-script/reference/gmail/gmail-message#getId()。这是一个独特的属性,因此如果它可以与您的 CRM 中的消息关联,那么只需将该 ID 与您的 CRM 中的 ID 进行比较并检查是否已上传具有该 ID 的消息即可。

一旦您将数千条消息上传到 CRM,这可能会变得繁琐,但这可能是您需要的开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Gmail 中的标签来识别单个邮件而不是已由脚本处理的线程 的相关文章

  • IMAP x Gmail => 标签?

    有没有从 imap 连接获取 Gmail 标签 甚至过滤器 的经验 找不到线索 谢谢您提供有关它的任何信息 或者 如果您以编程方式使用 IMAP 则可以使用 gmail imap 扩展来访问此信息 http code google com
  • QUnit 删除依赖项上的方法会破坏针对该依赖项的测试

    在 Google Apps 脚本中 我正在对我正在开发的应用程序进行单元测试 使用 QUnit https github com simula innovation qunit tree gas gas 使用测试驱动开发 正在测试的代码 我
  • 在 Google Apps 脚本中创建插件

    我已经整理了一些我想在其他 Google 工作表中访问的代码 但是 由于它使用 SpreadsheetApp getUi 因此代码必须绑定到工作表 因此 我决定创建代码作为附加组件 不幸的是 除非我打开应用程序脚本页面 否则附加组件不会出现
  • 如何从我的 Gmail 帐户接收推送通知?

    我想编写一个监视邮箱 最好是 Gmail 邮箱 的应用程序 简而言之 我的问题是如何收听传入的电子邮件 我总是可以继续提取电子邮件 但我担心这不能很好地扩展 iOS 如何使用 Gmail 我认为他们正在使用 Exchange 协议 但我不确
  • nodejs gmail api不支持承诺

    Google 推荐使用承诺 https developers google com api client library javascript features promises 但它的代码示例没有 当我修改代码时 我正在努力使 gmail
  • 用于向日历活动提交表单的 Google 脚本

    学校老师使用我的个人 Google 帐户创建表单并将日历发布到我的班级网站 努力让孩子 无法访问 Google Apps 尽可能快速 轻松地安排补考使用这种形式 https docs google com forms d 1 TvsZ3Wl
  • 使用 Google Apps 脚本从 Firebase 读取数据

    因此 正如标题所示 我目前正在解决一个相当麻烦的问题 这是场景 我有一个 Google 电子表格 其中包含一个包含姓名 电子邮件和到期日期的模板 但是 它不包含实际数据 数据本身位于 Firebase 中并且不断变化 那么 我的目标是让sc
  • 模板化 HTML 脚本中的换行符

    如果我有一个 HTML 文件 test html p p 和一个脚本函数 var t HtmlService createTemplateFromFile test html t str test nstring var content t
  • 如何在表单提交时运行 Appscript?

    我正在尝试创建当用户完成表单提交时重定向到网络应用程序的 Google 表单 我查过谷歌开发者文档 https developers google com apps script guides triggers 但我看不到一种简单的方法来做
  • 为什么电子邮件正文给出不同的输出?

    我正在尝试触发来自 Google 应用程序脚本的电子邮件 const body HtmlService createHtmlOutput A b new task b have been added to the Task Manager
  • 我正在尝试将变量从 Google 脚本传递到 HtmlOutputFromFile

    我正在尝试创建一个带有下拉列表的输入框 其中该列表基于从电子表格中提取的二维数组 到目前为止 我的研究告诉我 如果我将 HtmlService createHtmlOutputFromFile 存储在一个变量中 我就可以 设置该变量的属性
  • 正则表达式 - 使用正则表达式提取电子邮件文档的子字符串

    我正在尝试使用正则表达式提取电子邮件文档的子字符串 我正在在线测试正则表达式 它运行得很好 在线正则表达式测试器 https regex101 com r BbWBPk 1 我有一个功能可以检查 Google Apps 脚本上的正则表达式
  • 根据条件格式化货币

    Google Apps 脚本新手 但有一些 VBA 编码经验 我希望能够根据不同的单元格输入决定单元格的数字格式 eg Col A 客户名称 验证范围 B 栏 货币类型 英镑 美元 欧元 经过验证的列表 Col C 费用 100 用户免费类
  • 如何获得会议邀请以与 Gmail/Google Apps 正确集成?

    我正在使用 Django 和 python icalendar 生成 iCalendar 文件 它们在 Outlook 2010 中正确显示为会议邀请 在 Gmail Google Apps 中 我只看到一封空白电子邮件 这是怎么回事 我的
  • 在应用程序脚本中将 .XLS 转换为 Google 表格的最有效方法是什么?

    我每周都会自动将 XLS 文件下载到 Google 云端硬盘 我想每周自动将最新下载的 XLS 文件转换为 Google 表格格式 因此转到特定的 Google 驱动器文件夹 查找最新或未转换的 XLS 文件 转换为 Google 表格格式
  • Google App脚本:无法保留前导零,因为它被自动删除

    我是谷歌脚本的新手 我有一个像下面这样的场景 我有 Sheet1 其中包含 A 列和 B 列 通常我尝试将十进制值存储到其中 我的意思是A列中的整数部分和B列中的小数部分 例如 场景一 如果值为 23 75 则 Column A 应为 23
  • 自动从外部数据库加载 Google 电子表格数据

    我有一个共享的 Google 电子表格 工作表的某些列必须填充数据库服务器 PostgreSQL 中存在的数据 SQL 查询 此外 数据加载必须安排为自动完成 例如每天 1 点 最后 我需要在电子表格中进行一些调整 例如 加载后将日期时间放
  • ReferenceError:未定义 ConferenceDataService

    我正在尝试开发像 Zoom 会议这样的谷歌日历插件 在 appsscript json 文件中 有以下代码 calendar conferenceSolution onCreateFunction createConference id 1
  • 不允许从此上下文调用 Browser.inputBox()

    在我第一次使用 Google 脚本时 我尝试定义一个调用 Browser input 方法来获取用户名的函数 但我总是收到以下错误消息 不允许从此上下文中调用 Browser inputBox 我必须说 我是从葡萄牙语环境翻译的 因为英语中
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中

随机推荐