我会定期收到来自同一个人的电子邮件,每封电子邮件都包含一个或多个唯一身份识别码。我需要获得这些代码。
电子邮件正文包含大量不一致的电子邮件内容,但它是我感兴趣的字符串。它们看起来像......
这些字符串的共同之处在于,它们的长度均为32个字符,并且全部由大写,小写,数字和符号组成。但是给定的电子邮件可能包含无,一个或多个,并且字符串将处于不可预测的位置,而不是如上所述的相邻行。
我希望在Zapier(用于Web服务的链接工具)中创建一个Zap工作流,以找到这些字符串并在另一个应用程序中使用它们 - 即。无论什么时候找到一个字符串,都要创建一个新的Trello卡。
我已经开始使用Zapier" Gmail"集成为"触发器",特别是使用"来自:"对应于常规发件人的字段。这很容易。
但实际解析电子邮件正文让我感到害怕。 Zapier有一个基本的电子邮件解析器,但它不适合这个任务。什么是合适的使用Zapier自己的" Code"集成以执行自由格式代码 - 即用于标识这些字符串的正则表达式。
我之前从未这样做过,并且正在努力制定工作代码。 Zapier Code可以使用Python(documentation)或Javascript(documentation)。它支持数据变量" input_data" (Python)或" inputData" (Javascript)和"输出" (两者)。
请参阅下面的说明,我如何将Gmail正文插入" body"解析......
我需要使用Code框来构造一个正则表达式来查找每个唯一标识符字符串,并将其作为输入输出到工作流中的下一个集成,即。 Trello。
有关信息,请在上面的屏幕中找到现有的" hello world"框中的代码是Zapier自己的测试代码。字段" id"和"你好"可供链中的下一个工作流程应用程序使用。
但我需要为电子邮件正文中找到的所有字符串执行我的处理 - 即。如果电子邮件只包含一个代码,请创建一个Trello卡;但如果一封电子邮件包含四个代码,请为四个代码中的每一个创建一个Trello卡。
也就是说,可能有多个输出。我不知道这是如何工作的,因为我认为这些工作流程只能容纳一个动作。
我可以帮助越过山坡。感谢信。
答案 0 :(得分:1)
David来自Zapier平台团队。
我很高兴您对代码步骤感兴趣。假设你的假设(确切地说是32个字符)总是如此,这应该是相当简单的。
首先,正则表达式。我们想要寻找一个字母,数字或标点符号。幸运的是,javascript' \w
相当于[A-Z0-9a-z_]
,它涵盖了-
以外的所有示例中的基础,我们将手动包含这些基础。最后,我们需要32个字符长度的字符串,所以我们要求它。我们还想添加 g lobal标志,因此我们找到所有匹配项,而不仅仅是第一个。所以我们有以下几点:
/[\w-]{32}/g
你已经覆盖了身体的映射,这样做很好。 javascript代码如下:
// stores an array of any length (0 or more) with the matches
var matches = inputData.body.match(/[\w-]{32}/g)
// the .map function executes the nameless inner function once for each
// element of the array and returns a new array with the results
// [{str: 'loYm9vYzE6Z-aaj5lL_Og539wFer0KfD'}, ...]
return (matches || []).map(function (m) { return {str: m} })
在这里,您将利用代码步骤的未记录功能:当您返回一个对象数组时,后续步骤将针对每个对象执行一次。如果你返回一个空数组(如果没有找到键就会发生这种情况),zap停止并且没有其他事情发生。当您进行测试时,除了第一个结果之外的任何事情都没有任何指示。一旦你的zap开启并且运行真实,它就会像这里描述的那样散开。
这就是全部!希望一切都有意义。如果您有任何其他问题,请与我们联系!