发送生日电子邮件 sending-a-birthday-email
此用例介绍了如何计划在收件人生日当天向其列表发送定期电子邮件。
为了设置此用例,我们创建了以下定位工作流:
此(每日运行)工作流会选择其生日为当前日期的所有收件人。
为此,请创建一个营销活动并添加营销活动工作流。
然后按照下面详述的步骤操作。
识别其生日为的收件人 identifying-recipients-whose-birthday-it-is
在配置 Scheduler 活动以便工作流每天开始后,识别其出生日期等于当前日期的所有收件人。
要执行此操作,请应用以下步骤:
-
将 Query 活动拖放到工作流中并双击该活动。
-
单击 编辑查询 链接并选择 Filtering conditions。
-
单击 Expression 列的第一个单元格并单击 Edit expression 打开表达式编辑器。
-
单击 Advanced selection 以选择筛选模式。
-
选择 Edit the formula using an expression 并单击 Next 以显示表达式编辑器。
-
在函数列表中,双击 Day,可通过 Date 节点访问它。 此函数返回数字,该数字表示与作为参数传递的日期对应的日期。
-
在可用字段列表中,双击 Birth date。 然后,该编辑器的上半部分会显示以下公式:
code language-none Day(@birthDate)
单击 Finish 确认。
-
在查询编辑器中,在 Operator 列的第一个单元格中选择 equal to。
-
接下来,单击第二列(Value)的第一个单元格,然后单击 Edit expression 以打开表达式编辑器。
-
在函数列表中,双击 Day,可通过 Date 节点访问它。
-
双击 GetDate 函数以检索当前日期。
该编辑器的上半部分显示以下公式:
code language-none Day(GetDate())
单击 Finish 确认。
-
重复此过程以检索对应于当前月份的出生月份。 为此,请单击 Add 按钮并重复步骤3至10,将 Day 替换为 Month。
完整的查询如下所示:
将 Query 活动的结果链接到 Email delivery 活动,以向生日当天您的所有收件人的列表发送电子邮件。
包括2月29日出生的收件人(可选) including-recipients-born-on-february-29th--optional-
如果您希望包含所有在2月29日出生的收件人,则此用例将介绍如何计划向生日收件人的列表发送定期电子邮件 — 无论是否为闰年。
此用例的主要实施步骤包括:
- 选择收件人
- 选择是否为闰年
- 选择2月29日出生的任何收件人
为了设置此用例,我们创建了以下定位工作流:
如果当前年份 不是闰年,并且工作流在3月1日运行,我们需要选择昨天(2月29日)生日的所有收件人,并将他们添加到收件人列表中。 在任何其他情况下,均无需执行其他操作。
步骤1:选择收件人 step-1--selecting-the-recipients
在配置 Scheduler 活动以便工作流每天启动后,识别其周年是当天的所有收件人。
选择其生日对应于当前日期的收件人将显示在确定其生日是部分的收件人中。
步骤2:选择是否为闰年 step-2--select-whether-or-not-it-is-a-leap-year
Test 活动允许您检查是否为闰年,以及当前日期是否为3月1日。
如果测试得到验证(该年不是闰年 — 没有2月29日 — 并且当前日期确实是3月1日),则启用 True 过渡,并将在2月29日出生的收件人添加到3月1日投放。 否则,将启用 False 过渡,并且只有生于当前日期的收件人才会收到投放。
将下面的代码复制并粘贴到 Advanced 选项卡的 Initialization script 部分中。
function isLeapYear(iYear)
{
if(iYear/4 == Math.floor(iYear/4))
{
if(iYear/100 != Math.floor(iYear/100))
{
// Divisible by 4 only -> Leap Year
return 1;
}
else
{
if(iYear/400 == Math.floor(iYear/400))
{
// Divisible by 4, 100 and 400 -> Leap year
return 1;
}
}
}
// all others: no leap year
return 0;
}
// Return today's date and time
var currentTime = new Date()
// returns the month (from 0 to 11)
var month = currentTime.getMonth() + 1
// returns the day of the month (from 1 to 31)
var day = currentTime.getDate()
// returns the year (four digits)
var year = currentTime.getFullYear()
// is current year a leap year?
vars.currentIsALeapYear = isLeapYear(year);
// is current date the first of march?
if(month == 3 && day == 1) {
// today is 1st of march
vars.firstOfMarch = 1;
}
在 Conditional forks 部分中添加以下条件:
vars.currentIsALeapYear == 0 && vars.firstOfMarch == 1
步骤3:选择2月29日出生的任何收件人 step-3--select-any-recipients-born-on-february-29th
创建 Fork 活动并将其中一个叫客过渡链接到 Query 活动。
在此查询中,选择出生日期为2月29日的所有收件人。
将结果与 Union 活动合并。
将两个 Test 活动分支的结果链接到 Email delivery 活动,以向生日当天的所有收件人的列表发送电子邮件,甚至向在非闰年2月29日出生的人发送电子邮件。
创建循环投放 creating-a-recurring-delivery-in-a-targeting-workflow
基于要发送的生日电子邮件模板添加 定期投放 活动。