Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正则表达式Zapier并获得输出?_Javascript_Python_Zapier - Fatal编程技术网

Javascript 如何正则表达式Zapier并获得输出?

Javascript 如何正则表达式Zapier并获得输出?,javascript,python,zapier,Javascript,Python,Zapier,我经常收到来自同一个人的电子邮件,每封邮件都包含一个或多个唯一的识别码。我需要那些密码 电子邮件正文包含大量不一致的电子邮件内容,但我感兴趣的是字符串。他们看起来像 loYm9vYzE6Z-aaj5lL_Og539wFer0KfD FuZTFvYzE68y8-t4UgBT9npHLTGmVAor JpZDRwYzE6dgyo1legz9sqpVy_F21nx8 ZZ3RWYZE63P3UWX2ANPI-c4PMo7bFmj 这些字符串的共同点是,它们的长度都是32个字符,并且都是由大写、小写

我经常收到来自同一个人的电子邮件,每封邮件都包含一个或多个唯一的识别码。我需要那些密码

电子邮件正文包含大量不一致的电子邮件内容,但我感兴趣的是字符串。他们看起来像

  • loYm9vYzE6Z-aaj5lL_Og539wFer0KfD
  • FuZTFvYzE68y8-t4UgBT9npHLTGmVAor
  • JpZDRwYzE6dgyo1legz9sqpVy_F21nx8
  • ZZ3RWYZE63P3UWX2ANPI-c4PMo7bFmj
这些字符串的共同点是,它们的长度都是32个字符,并且都是由大写、小写、数字和符号混合组成的。但是,给定的电子邮件可能不包含任何内容、一个或多个内容,并且字符串将处于不可预测的位置,而不是在上面的相邻行上

我希望在web服务的链接工具中创建一个Zap工作流,以查找这些字符串并在另一个应用程序中使用它们-即,只要找到字符串,就创建一个新的Trello卡

我已经将Zapier的“Gmail”集成作为“触发器”启动了工作流,特别是使用与常规发件人对应的“发件人:”字段进行搜索。这是最简单的部分

但电子邮件正文的实际解析让我感到困惑。Zapier有一个基本的电子邮件解析器,但它不适合此任务。合适的做法是使用Zapier自己的“”集成来执行自由格式代码,即使用正则表达式来标识这些字符串

我以前从未这样做过,现在正在努力制定工作代码。Zapier可以采用Python()或Javascript()。它支持数据变量“input_data”(Python)或“inputData”(Javascript)和“output”(两者)

请看下面,我是如何将Gmail主体插入到“主体”中进行解析的

我需要使用代码框构造一个正则表达式来查找每个唯一标识符字符串,并将其作为输入输出到工作流中的下一个集成,即Trello

在上面的截图中,框中现有的“hello world”代码是Zapier自己的测试代码。“id”和“hello”字段可用于链中的下一个工作流应用程序

但我需要对电子邮件正文中的所有字符串进行处理,即,如果一封电子邮件只包含一个代码,则创建一张Trello卡;但是,如果一封电子邮件包含四个代码,请为这四个代码中的每一个创建一张Trello卡

也就是说,可能有多个输出。我不知道这是如何工作的,因为我认为这些工作流应该只支持一个操作


我需要一些人帮我翻山。谢谢。

这里是Zapier平台团队的David

我很高兴你对代码步骤表现出兴趣。假设您的假设(准确地说是32个字符)总是正确的,这应该是相当简单的

首先是正则表达式。我们想寻找一个字母、数字或标点符号的字符。幸运的是,javascript的
\w
相当于
[A-Z0-9a-z!]
,它涵盖了除
-
之外的所有示例中的基础,我们将手动包括
-
。最后,我们需要的字符串长度正好是32个字符,所以我们需要它。我们还希望添加global标志,以便查找所有匹配项,而不仅仅是第一个匹配项。因此,我们有以下几点:

/[\w-]{32}/g

您已经在中介绍了映射身体,所以这很好。javascript代码如下所示:

//存储具有匹配项的任意长度(0或更多)的数组
var matches=inputData.body.match(/[\w-]{32}/g)
//.map函数每次执行一次无名的内部函数
//元素,并返回带有结果的新数组
//[{str:'loYm9vYzE6Z-aaj5lL_Og539wFer0KfD'},]
return(匹配| |[]).map(函数(m){return{str:m})
在这里,您将利用代码步骤的一个未记录的特性:当您返回一个对象数组时,后续步骤将对每个对象执行一次。如果返回一个空数组(如果找不到键,则会发生这种情况),zap将停止,并且不会发生其他任何事情。当您进行测试时,除了第一个结果之外,没有任何指标表明任何东西都起作用。一旦你的zap启动并真正运行,它就会像这里描述的那样扇出


就这些!希望这一切都有意义。​如果你还有其他问题,请告诉我

@xaadavid,谢谢你的参与-这很清楚。然而,虽然正则表达式似乎工作得很好,而且我可以通过“运行Javascript”操作从“Gmail:New Email Matching Search”触发器中识别一个这样的字符串,但它会在一处停止(与您注释的相同。我的测试电子邮件正文包括三个这样的代码。我正在测试的操作(包括从仪表板实时运行)就是用“str”给自己发一封电子邮件,“runjavascript”的产品输出“str”。但只发送了一个电子邮件操作。我如何才能让多个操作发生,正如您所建议的,每个找到的项目一个操作?没问题,很高兴我能提供帮助。如果您从代码步骤成功返回多个对象,扇出应该可以工作。为了验证这一点,您可以调整上面的代码,将第二行的结果作为子键r返回a而不是对象。也就是说,
返回{results:[{str:'asdf'},…]}
。然后您可以验证正则表达式是否找到了您期望的所有键,并从那里开始。结果:
Bargle。我们在创建运行javascript时出错:-(错误:SyntaxError:意外标记)
我不明白什么,可能是关于
?更正-如果我让它在真实世界中的实时数据和新电子邮件上运行,它似乎工作得很好。这看起来很神奇。谢谢,xavdid!啊,是的,
只是为了说明那里有更多的代码。很高兴它工作了不过!如果它解决了您的问题,请确保将我的答案标记为已接受,以帮助未来的搜索者。