Community知识库聊天(5)品牌

让它变得漂亮

Category 1 Biking 即将到来。在这一步中,我们添加自定义品牌,更新组件,并对社区进行最后的修改。让我们开始吧。

点击Content Targeting [1],然后点击Builder [2]打开社区生成器。

Select Content Targeting and select Builder.

我们首先向社区添加品牌,并更新导航菜单。

更新标题

  1. 点击标题组件。
    Select the Headline component
  2. 更新标题如下:
    • 标题: Category 1 Biking
    • 横幅文本: Welcome to the community!

更新品牌

  1. 选择 Branding.
    Select Branding
  2. 在颜色下,选择任何调色板。
  3. 在图片下,点击标题图片,然后点击上传图片上传图片。从您之前下载的zip文件中选择header.jpg。

更新导航菜单

  1. 点击Navigation Menu组件。
    Click the Navigation Menu component
  2. 点击 Navigation Menu.
  3. 点击 + Add Menu.
  4. 定义菜单项如下:
    • 名称: Cases
    • 类型: Salesforce Object
    • 对象类型: Case
    • 默认列表视图: My Open Cases
  5. 点击 Save Menu.
  6. 点击 Publish.

添加聊天管理单元和文章组件

  1. 选择 Components.
    Select Components
  2. 找到管理单元聊天[1]和趋势文章的主题[2]组件。
    Go to Components. The Snap-ins Chat component is under the Support menu, and the Trending Articles by Topic Component is under the Topics menu.
  3. 选择管理单元聊天并将其拖动到问题组件下方的侧边栏中。关闭管理单元聊天对话框。
  4. Trending Articles by Topic,然后将其拖到“管理单元”聊天组件下方的边栏中。按主题关闭趋势文章对话框。
    Screenshot of the Snap-in chat and Trending Articles by Topic components placed below the Ask a Question button

发布你的社区

  1. 点击 Publish.
  2. 在发布您的社区确认屏幕上,单击Publish,然后Got It.

一旦您的社区发布,您将收到电子邮件确认。点击电子邮件中的链接即可查看您的社区!

Community知识库聊天(4)主题

时间去建造它

我们在这个项目的早期启用了主题。现在,我们将设置三类主题,即1类骑行选择的社区主题:社交群体,新产品和客户支持。我们从社区工作区更新这些。

首先,你要回到安装程序。从示例控制台中,单击齿轮图标返回到设置[1]。

click the gear icon from Sample Console to get back to Setup

  1. 从设置中,在快速查找中输入All Communities,然后选择All Communities
  2. 在 Category 1 Biking,单击 Workspaces.

设置导航主题

现在是时候来定制我们的社区!

  1. 选择Content Targeting.
    Community Workspaces home page with tiles for each workspace. Click the Content Targeting tile.
  2. 点击 Navigational Topics.
  3. 在输入导航主题中,输入 Customer Support 然后单击 + Add.
  4. 在输入导航主题中,输入 Social Groups 然后单击 + Add.
  5. 在输入导航主题中,输入 New Products 然后单击 + Add.
  6. 点击 Save.

设置特色主题

现在我们将这些主题设置为我们社区的特色。

  1. 选择 Featured Topics.
  2. 在选择主题中,输入 Customer Support. 选择 Customer Support 然后单击+ Add.
  3. 在选择主题中,输入 Social Groups. 选择Social Groups 然后单击+ Add.
  4. 在选择主题中,输入 New Products. 选择New Products 然后单击+ Add.
  5. 点击 Save.

将图像添加到主题

我们为每个主题添加一些图片。下载此zip文件以访问可用于此社区项目的图像。

  1. 点击Customer Support旁边的pencil icon.
  2. 点击Upload thumbnail image.
  3. 从下载的zip文件中选择support.png。等待图像显示。
  4. 点击Close.
  5. 点击社交群组旁边的pencil icon
  6. 点击 Upload thumbnail image.
  7. 从下载的zip文件中选择groups.png。等待图像显示。
  8. 点击 Close.
  9. 点击新产品旁边的pencil icon
  10. 点击 Upload thumbnail image.
  11. 从下载的zip文件中选择products.png 等待图像显示。
  12. 点击 Close.
  13. 点击 Save.

将主题添加到文章

最后,我们将这些主题与我们之前在项目中创建的文章相关联。

  1. 选择 Article Management.
  2. 点击When will my bike arrive?旁边的pencil icon
  3. 在添加主题中,开始输入 Customer 然后选择 Customer Support.
  4. 点击 Save.
  5. 点击How can I find local bike groups?旁边的pencil icon
  6. 在添加主题中,开始输入 Social 然后选择 Social Groups.
  7. 点击 Save.
  8. 点击When is the T-800 coming out?旁边的pencil icon
  9. 在添加主题中,开始输入 New 然后选择  New Products.
  10. 点击 Save.

好一个。我们已经有了1类自行车社区的良好状态。现在是下一步添加组件和品牌的时候了。

Community知识库聊天(4)主题

时间去建造它

我们在这个项目的早期启用了主题。现在,我们将设置三类主题,即1类骑行选择的社区主题:社交群体,新产品和客户支持。我们从社区工作区更新这些。

首先,你要回到安装程序。从示例控制台中,单击齿轮图标返回到设置[1]。

click the gear icon from Sample Console to get back to Setup

  1. 从设置中,在快速查找中输入All Communities,然后选择All Communities
  2. 在 Category 1 Biking,单击 Workspaces.

设置导航主题

现在是时候来定制我们的社区!

  1. 选择Content Targeting.
    Community Workspaces home page with tiles for each workspace. Click the Content Targeting tile.
  2. 点击 Navigational Topics.
  3. 在输入导航主题中,输入 Customer Support 然后单击 + Add.
  4. 在输入导航主题中,输入 Social Groups 然后单击 + Add.
  5. 在输入导航主题中,输入 New Products 然后单击 + Add.
  6. 点击 Save.

设置特色主题

现在我们将这些主题设置为我们社区的特色。

  1. 选择 Featured Topics.
  2. 在选择主题中,输入 Customer Support. 选择 Customer Support 然后单击+ Add.
  3. 在选择主题中,输入 Social Groups. 选择Social Groups 然后单击+ Add.
  4. 在选择主题中,输入 New Products. 选择New Products 然后单击+ Add.
  5. 点击 Save.

将图像添加到主题

我们为每个主题添加一些图片。下载此zip文件以访问可用于此社区项目的图像。

  1. 点击Customer Support旁边的pencil icon.
  2. 点击Upload thumbnail image.
  3. 从下载的zip文件中选择support.png。等待图像显示。
  4. 点击Close.
  5. 点击社交群组旁边的pencil icon
  6. 点击 Upload thumbnail image.
  7. 从下载的zip文件中选择groups.png。等待图像显示。
  8. 点击 Close.
  9. 点击新产品旁边的pencil icon
  10. 点击 Upload thumbnail image.
  11. 从下载的zip文件中选择products.png 等待图像显示。
  12. 点击 Close.
  13. 点击 Save.

将主题添加到文章

最后,我们将这些主题与我们之前在项目中创建的文章相关联。

  1. 选择 Article Management.
  2. 点击When will my bike arrive?旁边的pencil icon
  3. 在添加主题中,开始输入 Customer 然后选择 Customer Support.
  4. 点击 Save.
  5. 点击How can I find local bike groups?旁边的pencil icon
  6. 在添加主题中,开始输入 Social 然后选择 Social Groups.
  7. 点击 Save.
  8. 点击When is the T-800 coming out?旁边的pencil icon
  9. 在添加主题中,开始输入 New 然后选择  New Products.
  10. 点击 Save.

好一个。我们已经有了1类自行车社区的良好状态。现在是下一步添加组件和品牌的时候了。

Community知识库聊天(3)知识库

知识就是力量

在自助服务社区中提供高质量的知识文章可以为案件偏差,客户满意度和代理人生产力创造奇迹。目前,第1类自行车的勤奋支持代理商依靠常见问题解答贴在办公室墙壁和收银机上。有时间将这些常见问题解答上传到社区!

分配权限

要访问知识,您需要有关您的用户记录的权限。

  1. 从设置中,在快速查找中输入Users并选择Users
  2. 点击您的姓名旁边的 Edit 
  3. 选择 Knowledge User.
  4. 点击 Save.

启用闪电知识

现在让我们开启闪电知识。

  1. 从设置中,在快速查找中输入Knowledge Settings,然后选择Knowledge Settings
  2. 选择 Yes, I understand the impact of enabling Salesforce Knowledge.
  3. 点击 Enable Salesforce Knowledge.
  4. 点击 OK.
  5. 在“知识设置”页面上,单击 Edit.
  6. 选择 Enable Lightning Knowledge.
  7. 在“语言设置”下,为默认知识库语言选择English
  8. 向下滚动到页面底部。在Chatter问题设置下,选择 Display relevant articles as users ask questions in Chatter (also applies to communities with Chatter).
  9. 在知识统计设置下,选择 Enable thumbs up or down voting for article.
  10. 点击 Save.

简单的语言。虽然知识支持多种语言,you must choose a single language as the default,以验证您的Trailhead项目的工作。由于第1类骑自行车是在英国,选择英语作为默认的知识基础语言。

配置闪电知识

您可以创建记录类型来区分知识文章类型和自定义字段以存储不同类型的信息。类别1自行车从简单的常见问题解答记录类型和单个文本字段开始,以捕获文章内容。

  1. 从设置中,在快速查找中输入 Knowledge Object Setup 然后选择Knowledge Object Setup.
  2. 在记录类型下,单击 New.
  3. 定义记录类型如下:
    • 现有记录类型: Master
    • 记录类型标签 FAQ
    • 记录类型名称: FAQ
  4. 为所有配置文件选择 Enable for Profile
  5. 点击 Next.
  6. 按原样保留默认值,然后单击 Save.

现在我们将制作自定义字段。您仍然应该在知识对象主页上,但是如果没有,则从安装程序中,在快速查找中输入Knowledge Object Setup,然后选择Knowledge Object Setup

  1. 在字段下,单击 New.
  2. 对于数据类型,请选择 Text Area (Long) 然后单击 Next.
  3. 定义自定义字段,如下所示:
    • 字段标签: Text
    • 长度: 32,768
    • 可见线: 3
    • 字段名称: Text
  4. 点击 Next.
  5. 为所有配置文件选择 Visible 然后单击 Next.
  6. 为知识布局选择添加字段,然后单击 Save.

最后,我们更新页面布局,将文本字段放在页面布局的正确位置上。同样,您仍然应该在知识对象主页上,但如果没有,则从安装程序中,在快速查找中输入Knowledge Object Setup,然后选择Knowledge Object Setup

  1. 在页面布局下,单击“知识布局”旁边的 Edit
  2. 使用页面布局编辑器,将文本字段拖到标题下方。如果它已经在正确的位置,就不需要操作!
  3. 点击 Save.

page layout editor for Knowledge with the Title field on top and the Text field directly below it

为对象启用主题

有很多方法来组织内容。通过主题,您可以通过分配特定的主题区域对知识文章进行分类和搜索。

这很好地满足了1类自行车的需求,因为他们希望围绕共同话题围绕对话和知识文章。随着时间的推移,他们希望让社区在确定这些主题方面有更多的控制权。但要开始,他们希望通过他们认为重要的几个主题启动他们的社区。

首先,我们必须启用主题。

  1. 从安装程序中,输入快速查找中的Topics for Objects,然后选择Topics for Objects
  2. 在对象下,选择 Knowledge.
  3. 点击 Enable Topics.
  4. 检查 Title 和 Text
  5. 点击 Save.

当我们配置我们的社区时,我们稍后再回到主题。

创建知识文章

现在我们已经有了知识的基本设置,让我们为1类自行车创建一些示例文章。

通过从应用程序选择器[1]选择Sample Console或单击Back to Sample Console [2]导航到示例控制台。

没有看到示例控制台?确保你已经使系统管理员配置文件可见。在快速查找中输入应用并选择应用。点击示例控制台旁边的编辑,然后向下滚动到靠近页面底部的指定给配置文件。选择系统管理员旁边的可见。

Select Sample Console from the App Picker or choose Back to Sample Console

  1. 从示例控制台中,选择Knowledge.
    Choose Knowledge from the Sample Console
  2. 点击创建 Create Article 然后选择 FAQ.
  3. 对于Title,请输入 When is the T-800 coming out?
  4. 点击URL名称字段以从标题生成URL名称。
  5. 对于文本,请输入: Hopefully this summer!
  6. 在渠道下,选择 Customer.
  7. 单击 Save.单击 Publish.
  8. 选择 Publish now 然后单击 OK.

按照相同的步骤发布另外两篇知识文章。

创建这篇文章:

  • 文章类型: FAQ
  • 标题: How can I find local bike groups?
  • 文字: Check out Social Groups topic here on the community to find local meetings.
  • 渠道: Customer

并创建这篇文章:

  • Article Type:FAQ
  • 标题: When will my bike arrive?
  • 文字: Most shipments arrive within 7-10 business days. You will receive an email confirmation with tracking information once your bike ships.
  • 渠道: Customer

Be sure to Save and Publish both articles, and select the Customer channel. 在示例控制台中刷新浏览器以查看您创建的文章。

请记住, you need to have selected English as the default language 才能通过此步骤。

现在是时候配置我们的社区了。 我们将在下一步开始。

Community知识库聊天(2)聊天

回到设置

迄今为止工作出色。你已经为第一类自行车社区奠定了基础,比超速自行车在人行道上留下滑行标记的速度更快。在这一步中,您完成了对聊天组件的配置。要做到这一点,我们必须回到安装程序。

要返回到安装程序,单击 Community Workspaces [1], 然后单击 Salesforce Setup [2].

Click Community Workspaces and select Salesforce Setup.

将聊天网页列入白名单

要为Live Agent创建管理单元,您需要将聊天网页列入白名单。这使得该页面可用,以便人们可以与您聊天。

  1. 从设置中,在快速查找中输入 Visualforce Pages 然后选择 Visualforce Pages.
  2. 您会看到为您的社区创建的几个页面。在CommunitiesTemplate旁边,选择启动图标以启动该页面。
  3. 只复制域名和协议。例如,如果URL是https://brave-raccoon-15964-dev-ed–c.na40.visual.force.com/apex/CommunitiesTemplate, 复制https://brave-raccoon-15964-dev-ed–c.na40.visual.force.com.copy everything before /apex/CommunitiesTemplate
  4. 从设置中,在快速查找中输入 CORS 然后选择 CORS.
  5. 点击 New.
  6. 对于原始URL模式,粘贴您复制的协议和域名。
  7. 点击 Save.

创建一个管理单元部署

好的,现在我们准备好让聊天管理单元了。聊天管理单元需要聊天按钮和部署。我们已经在前面创建了这些,所以现在我们只需要创建管理单元。

对于这一步,你需要切换到闪电体验。从标题中选择你的名字[1],然后选择切换到闪电体验[2]。

Click your name and select Switch to Lightning Experience.

  1. 点击Gear icon used to launch Setup并选择Setup。这会在新选项卡中启动安装程序。
  2. 从安装程序中,在快速查找中输入 Snap-ins,然后选择Snap-ins
  3. 点击 New Deployment.
  4. 按如下方式定义管理单元部署:
    • 管理单元部署名称: Chat Deployment
    • API名称: Chat_Deployment
    • 网站端点: Category_1_Biking
  5. 点击 Create.

定义管理单元部署

  1. 在Live Agent基本设置旁边,单击 Start.
  2. 对于Live Agent部署,请选择 Web_Support_Chat_Deployment.
  3. 对于Live Agent按钮,请选择 Web_Support_Chat.
  4. 点击 Save.

切换回Salesforce Classic。要切换到Salesforce Classic,请单击您的配置文件[1]并选择切换到Salesforce Classic [2]。

Click the profile icon and select Switch to Salesforce Classic.

现在我们已经准备好了我们的聊天配置。接下来,我们为我们的社区增加另一个重要功能。

Community知识库聊天(1)Live Agent

切换到Salesforce Classic

现在您已打开Trailhead Playground,切换到Salesforce Classic执行设置步骤。

不确定那是什么意思?那么,Salesforce有两种用户体验:Lightning Experience和Salesforce Classic。对于此项目,您需要使用Salesforce Classic设置一些功能。

要切换到Salesforce Classic,请单击您的配置文件[1]并选择切换到Salesforce Classic [2]。

Click the profile icon in the lightning header and then select Switch to Salesforce Classic.

进入Salesforce Classic后,点击设置[3]。

From the Classic header click the Setup link to go to Setup.

启用Live Agent

Live Agent是服务云功能,允许您直接从您的网站与客户聊天。类别1自行车已决定实施聊天,以便他们能够更快地联系客户,并为他们提供更多的选择。让我们打开Live Agent。

  1. 从安装程序中,在快速查找中输入 Live Agent Settings ,然后选择 Live Agent Settings.
  2. 选择 Enable Live Agent.
  3. 点击 Save.

分配Live Agent权限

要访问Live Agent,您需要对用户记录的权限。

  1. 从设置中,在快速查找中输入 Users 并选择 Users.
  2. 击您的姓名旁边的 Edit
  3. 选择 Live Agent User.
  4. 点击 Save.

创建实时代理技能

技能是您分配给代理人的专业知识领域,所以聊天会被发送给具有正确技能的代理人。您可以创建渠道,产品,升级路径等技能。例如,类别1骑自行车可能想要分配不同的成人自行车技能与孩子的自行车。

对于这个项目,我们设置了一项技巧来保持简单。您以后可以随时添加更多技能。

  1. 在快速查找中输入 Skills 然后选择 Skills.
  2. 点击 New.
  3. 定义技能如下:
    • 名称: Web Support
    • 开发人员名称: Web_Support
  4. 在分配配置文件区域中,添加 System Administrator, Custom: Support Profile, 和 Standard User.
  5. 点击 Save.

创建一个Live Agent配置

配置确定您的支持人员的设置。

  1. 在快速查找中输入 Live Agent Configurations 然后选择 Live Agent Configurations.
  2. 点击 New.
  3. 定义配置如下:
    • Live Agent配置名称: Web Support Configuration
    • 开发人员名称: Web_Support_Configuration
  4. 在分配配置文件区域中,添加 System Administrator, Custom: Support Profile, 和 Standard User.
  5. 点击 Save.

创建一个Live Agent聊天按钮

通过聊天按钮,社区成员可以与您的座席开始聊天。

  1. 在快速查找中输入 Chat Buttons 然后选择聊天 Chat Buttons & Invitations.
  2. 点击 New.
  3. 选择类型 Chat Button.
  4. 定义按钮如下:
    • 名称: Web Support Chat
    • 开发者名称: Web_Support_Chat
  5. 在“路由信息”下,从“可用技能”中选择“Web Support”并将其添加到
  6. 点击 Save.

创建实时代理部署

  1. 在快速查找中输入 Deployments 然后选择 Deployments.
  2. 点击 New.
  3. 按如下方式定义您的部署:
    • Live Agent部署名称: Web Support Chat Deployment
    • 开发者名称: Web_Support_Chat_Deployment
  4. 为聊天窗口标题输入 Category 1 Biking.
  5. 点击 Save.

将Live Agent添加到示例控制台

在项目的后期,我们模拟你和(ahem)之间的聊天会话。为此,我们需要将Live Agent添加到Trailhead Playground中的示例控制台。

  1. 在快速查找中输入 Apps 然后选择 Apps.
  2. 点击示例控制台旁边的 Edit
  3. 选择 Include Live Agent in this App.
  4. 在“选择聊天工作区选项”旁边,选择 New case.
  5. 向下滚动到页面底部附近的指定。选择系统管理员旁边的可见。
  6. 点击 Save.

启用社区

客户社区可以让客户随时随地与公司进行交流。他们可以搜索文章,提出问题,并获得众包的答案。这种功能正是“1类骑行”需要吸引忠实粉丝的功能。

让我们开始打开社区。

注意:启用社区后,您无法关闭它。

  1. 从设置中,在快速查找中输入 Communities Settings 然后选择 Communities Settings.
  2. 选择 Enable Communities.
  3. 输入一个唯一的值作为您的域名,然后点击 Check Availability. (注意:请记住,保存后不能更改域名,必须调用Salesforce才能更改域名。)
  4. 点击 Save.
  5. 点击 OK.

您应该已被重定向到安装程序中的“所有社区”页面,但如果没有,请在快速查找中输入 All Communities 然后选择 All Communities.

  1. 点击 New Community.
  2. 选择 Customer Service (Napili) template.
  3. 点击 Get Started.
  4. 对于名称,输入 Category 1 Biking.
  5. 点击 Create.

快速浏览一下。这是社区工作区,你很快就会回到这里来定制和管理你的社区。但现在,让我们完成配置我们的类别1骑自行车的聊天组件。我们在项目的下一步做到这一点。

公式(7)错误

学习目标

完成本单元后,您将能够:

  • 了解常见配方错误的原因。
  • 排查高级公式字段。

语法错误

即使是高级配方大师偶尔也会遇到他们的配方的问题。最常见的公式错误是语法错误。要随时检查公式的语法,请单击 Check Syntax.

缺少或额外的括号

在你的公式中不小心输入一个额外的括号或者留下一个。嵌套逻辑语句(如IF(),AND()和OR()时,此错误尤为常见。

如,这个公式在最后缺少一个左括号。

A syntax error for a missing parenthesis

如果在函数内有太多括号或逗号,则也会出现此错误。这是相同的公式,但带有一个额外的括号。

A syntax error for an extra parenthesis

字段不存在

当涉及语法错误时,高级公式编辑器是您的朋友。在使用插入操作符或插入字段按钮时,几乎不可能拼错字段或函数的名称。

A syntax error for an incorrectly spelled field name

这里我们打算引用Principal__c而不是Principle__c。如果忘记在文本字符串周围加上引号,也会出现此错误。

参数数量不正确

如果某个函数使用的参数数量不正确,则会遇到语法错误。对使用可变数量参数的函数(如CASE())要格外小心。

A syntax error for the incorrect number of parameters in a function

这个公式在CASE()语句中遗漏了最后一个参数,即贯穿案例。公式编辑器假设我们只想检查四个案例,而不是五个。所以总共找了10个论点,我们真的要给它12个。

未知功能

当您拼错函数名称或者尝试使用不存在的函数时,您也会遇到错误。

A syntax error for an unknown function

此公式尝试引用不存在的函数MINIMUM()。我们打算使用MIN(),它取一个数字列表并返回最小值。

使用不同的数据类型

在创建公式时,请在编写公式之前考虑希望它返回的数据类型。如果您的公式返回的数据类型不是您选择的数据类型,则无法保存。

在类型之间转换数值或使用类似数据类型(如日期和日期/时间或数字和货币)时很容易混淆数据类型。例如,此公式被写为在所选公式返回类型为Date / Time时返回Date值。

This formula's return type differs from the data type of the value it is written to return.

若要更正此错误,您可以将公式字段的返回类型更改为日期。或者,您可以用NOW()替换TODAY()来生成日期/时间值而不是日期。

编译大小和公式长度错误

公式字段功能强大,但规模受限。公式限制为3,900个字符或4,000个字节,包括空格,返回字符和注释,编译时不能超过5,000个字节。了解这些大小限制之间的区别以及如何解决或限制这些限制很重要。

长度限制

公式限于3,900个字符。你可以用几种方法缩短长公式。用&&​​替换AND(),例如,每次使用都会保存几个字符,就像使用CASE()语句替换嵌套的IF()语句一样。较短的字段名称和注释也会在公式的长度上产生一个小而显着的差异。

如果您的公式字段明显长于3,900个字符,请使用助手公式字段。

编译大小限制

小于3,900个字符的公式仍可能超过5,000字节的编译大小限制。当公式超过编译大小限制时,创建助手字段并缩短字段名称或注释并没有什么区别。引用辅助字段时,其编译大小将被添加到引用它的公式的编译大小。减少公式编译大小的一种方法是最小化对其他公式字段的引用。

一些用于减少公式长度的方法,例如用CASE()语句替换嵌套的IF()语句,也减少了公式的编译大小。

考虑两个领域:

  • Date1__c 是日期字段。
  • Date2__c 是从Date1__c创建日期的公式字段。
    DATE( YEAR( Date1__c ), MONTH( Date1__c ), DAY( Date1__c ) )
    下面的公式返回给定日期的月份的最后一天的日期(假设2月总是有28天):
DATE(
 YEAR( SomeDate__c ),
 MONTH( SomeDate__c ),
 IF(
   OR(
     MONTH( SomeDate__c ) = 4,
     MONTH( SomeDate__c ) = 6,
     MONTH( SomeDate__c ) = 9,
     MONTH( SomeDate__c ) = 11
   ),
   30,
   IF(
     MONTH( SomeDate__c ) = 2,
     28,
     31
   )
 )
)
该公式首先检查30天的月份,然后是2月份,剩下的月份是31天。它需要一个嵌套的IF()函数,这是不太可读的,编译为Date1__c的1069个字符和Date2__c的7,271个字符!为什么?因为公式引用日期七次。比较这个公式的修改版本:
DATE(
 YEAR( SomeDate__c ),
 MONTH( SomeDate__c ),
 CASE(
   MONTH( SomeDate__c ),
   2, 28,
   4, 30,
   6, 30,
   9, 30,
   11, 30,
   31
 )
)

这不仅更容易阅读,公式编译为Date1__c只有645个字符,Date2__c只有3,309个字符,现在它引用日期三次而不是七次。

此示例来自Salesforce Answers社区。领料单存储负责机会的代理人的名字。该公式根据基本佣金价值和乘数计算佣金。但是因为在CASE()语句的每个条件中引用了Base_Commission__c,所以公式超出了编译大小。

CASE( Agent__c,
  "John", Base_Commission__c * 2,
  "Jane", Base_Commission__c * 6,
  /* 重复许多其他代理 */
  Base_Commission__c
)
要解决此问题,请将CASE()函数外部的Base_Commission__c移动。该公式可以被重写为:
Base_Commission__c * CASE( Agent__c,
  "John", 2,
  "Jane", 6,
  /* 许多其他代理重复 */
  1
)
即使基本佣金只是一个货币字段,而不是一个公式本身,引用一次而不是多次,大大减少了公式编译的大小。

公式(6)高级

学习目标

完成本单元后,您将能够:

  • 实现高级公式以匹配复杂的用例。
  • 写干净,易于理解的公式。

先进的公式

我们已经在这个模块中看到了很多复杂的公式。然而,将业务问题转化为基于公式的解决方案并不总是容易的。这个单位有几个提示从概念到现实的公式。

把它写出来

当你有一个公式的想法,在你拉起高级公式编辑器之前,用日常语言思考。首先问自己你的目标是什么,然后对话描述。

此示例来自Salesforce Trailblazer社区:假设您的目标是确保如果系统管理员以外的任何人将机会标记为“已关闭丢失”,则必须提供解释。

对于这个例子,我们假设你已经有了自定义的选项列表字段Loss Reason,并填充了失去机会的有效理由。由于没有人能够在不提供理由的情况下保存记录,因此我们使用验证规则公式来实现我们的目标。

用简单的语言,你的公式是:

当机会阶段由非系统管理员的人员更改为“已关闭丢失”时显示错误,并且丢失原因为空。

在写出公式之后,查找与本模块中使用的函数相对应的关键字“and”,“or”,“if”。这些功能是更大,更复杂的公式的基石。在用例中识别它们可以帮助你实现这样的公式。

要检查用户不是系统管理员,请插入$ Profile.Name,这是一个合并字段,表示对记录进行编辑的配置文件。要检查StageName是否已更新,请使用ISCHANGED()。如果字段的当前值不同于以前的值,则ISCHANGED()返回true。

您可以使用ISPICKVAL()检查其余的需求。有关ISPICKVAL()的更多信息,请参阅在公式中使用选取列表。

  1. 在安装程序中,使用快速查找框来查找 Object Manager.
  2. 点击 Opportunity | Validation Rules.
  3. 点击 New.
  4. Rule Name,输入 Loss Reason Required.
  5. Error Condition Formula, 输入以下公式:
    AND(
      $Profile.Name <> "System Administrator",
      ISCHANGED(StageName),
      ISPICKVAL(StageName, "Closed Lost"),
      ISPICKVAL(Loss_Reason__c, "")
    )
  6. Error Message, 输入 Opportunities can’t be marked Closed Lost without providing a Loss Reason.
  7. 对于错误位置,请选择 Field 和 Loss Reason.
  8. 点击 Save.

现在,只要不是系统管理员的用户将机会标记为“关闭丢失”,就会显示错误消息。

使用清除间距和格式

使用适当的间距和格式时,公式更易于阅读和理解。当我们使用文本公式时,我们写了一个公式,根据国家,收入和来源动态地给一个潜在客户分配评分。

IF(AND(AnnualRevenue > 1000000, CONTAINS(CASE(Country,
"United States", "US", "America", "US", "USA", "US", "US", "US",
"NA"), "US")), IF(ISPICKVAL(LeadSource, "Partner Referral"),
"Hot", IF(OR(ISPICKVAL (LeadSource, "Purchased List"),
ISPICKVAL(LeadSource, "Web")), "Warm”, "Cold")), "Cold")
虽然这个公式在语法上是正确的,但几乎不可能说出它的作用或逻辑的工作方式。由于空格和返回在公式中无关紧要,因此使公式更易于使公式更具可读性。这是相同的公式,但用缩进和返回清理。
IF(
  AND(AnnualRevenue > 1000000,
  CONTAINS(CASE(Country, "United States", "US", "America",
    "US", "USA", "US", "US", "US", "NA"), "US")),
  IF(
    ISPICKVAL(LeadSource, "Partner Referral"), "Hot",
    IF(
      OR(
        ISPICKVAL(LeadSource, "Purchased List"),
        ISPICKVAL(LeadSource, "Web")
      ), "Warm”, "Cold"
    )
  ), "Cold"
)

虽然格式化公式没有硬性和快速的规则,但是我们建议您在每次嵌套逻辑语句时使用两个空格缩进。当你正确和一致的缩进,很容易看到你正在使用哪个函数,并避免不匹配的括号。

另一种使逻辑语句易于阅读的方法是使用逻辑运算符而不是函数。当您使用&&而不是AND()或||时而不是OR(),读取公式的人更容易遵循逻辑流程。这里再一次用&&和||表示相同的公式而不是AND()和OR()。

IF(
  AnnualRevenue > 1000000 &&
  CONTAINS(CASE(Country, "United States", "US", "America", "US", 
    "USA", "US", "US", "US", "NA"), "US"),
  IF(
    ISPICKVAL(LeadSource, "Partner Referral"), "Hot",
    IF(
      ISPICKVAL(LeadSource, "PurchasedList") ||
      ISPICKVAL(LeadSource, "Web"),
      "Warm", "Cold"
    )
  ), "Cold"
)

把事情简单化

在编写复杂的公式时,很容易陷入嵌套的逻辑语句和对其他字段的引用。通常,最简单的公式是最好的公式。

如果机会的关闭日期不在当前月份,此验证规则公式返回true

OR (
CloseDate < DATE( YEAR(TODAY()), MONTH(TODAY()), 1), 
IF (
AND (
MONTH (TODAY() ) =1, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true, 
IF (
AND (
MONTH (TODAY() ) =2, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 28)), 
true,
IF (
AND (
MONTH (TODAY() ) =3, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)), 
true,
IF (
AND (
MONTH (TODAY() ) =4, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =5, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true, 
IF (
AND (
MONTH (TODAY() ) =6, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =7, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =8, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =9, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =10, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =11, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =12, 
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true, false
)))))))))))))
这个复杂的检查确定关闭日期是早于当前月的第一天,还是晚于本月的最后一天。但实际上,这一天根本不重要:如果关闭日期的月份和年份与当月份的月份和年份相同,则是同一月份。所以我们可以将公式改写为:
NOT( 
  AND( 
    MONTH( CloseDate ) = MONTH( TODAY() ), 
    YEAR( CloseDate ) = YEAR( TODAY() ) 
  ) 
)
这个新版本更具可读性,只能编译为200个字符,而原始公式则超过3,000个。如果你的公式看起来比它应该更复杂,那很可能是 – 从不同的角度来解决问题来简化事情。

公式(5)文本

学习目标

完成本单元后,您将能够:

  • 描述什么是文本类型。
  • 将文本值转换为其他数据类型或从其他数据类
  • 描述使用文本类型的公式的用例。
  • 使用文本类型创建一个公式。

公式中的文本介绍

有时,让您的组织中的信息一目了然,最简单的方法就是将其显示为文本。使用文本返回类型的公式可以连接文本值,将数字和日期转换为文本,或者有条件地显示文本。

你可以做的最简单的事情是将两个文本字符串与运算符&连接起来。例如,您可以通过组合名字和姓氏来显示联系人的全名。

FirstName & " " & LastName
将文本值放在一起时,请考虑必要的空格,以便字符串不会显示为废话 – “Jane Doe”比“JaneDoe”更具可读性。
 

常见的文本函数和操作符

Salesforce带有许多功能和操作员,可以使用公式中的文本进行工作。使用公式,可以将其他数据类型转换为文本并将文本值连接在一起,或在文本字段中搜索特定的字符串。

转换为文本值和从文本值转换

TEXT()将百分比,数字,日期,日期/时间,选取列表或货币字段转换为文本。 TEXT()返回没有任何格式,逗号或货币符号的输出。例如,TEXT(percent_value),如果percent_value设置为30%,则返回0.3。

当TEXT()收到日期或日期/时间值时,它返回一个带有标准日期或日期/时间格式的字符串。例如,如果date_value对应于2015年3月17日,则TEXT(date_value)返回2015-03-17。对于datetime_value 2015年3月17日下午5点,TEXT(datetime_value)返回2015-03-17 17:00:00Z。 Z表示GMT-TEXT()返回的时间总是返回格林尼治标准时间的日期/时间值,而不是当前用户或组织的时区。

您也可以使用VALUE()以另一种方式转换值,该值使用Text值并返回一个Number。如果VALUE()接收到的值不是一个数字,包括小数点或减号(负号)以外的任何特殊字符,则会显示#Error!例如,如果text_value是$ 500,则VALUE(text_value)将返回一个错误。如果text_value为空,则VALUE()也会返回错误。

其他文字功能

如果文本以compare_text开头,则BEGINS(text,compare_text)返回true。如果compare_text是文本中的任何位置,则CONTAINS(text,compare_text)将返回true。这些功能对于根据文本字段有条件地显示信息很有用。

函数SUBSTITUTE(text,old_text,new_text)用new_text替换old_text的任何实例,就像文本编辑器中的find和replace函数一样。

Salesforce包含其他用于处理公式中文本和格式化的函数。有关更多信息,请参阅Salesforce联机帮助中的公式运算符和函数。

在公式中使用文本类型

分配客户评级

通常,使用文本返回类型的公式显示很难量化的信息。例如,您可以使用文本公式来确定铅是热,暖还是冷。我们将编写一个既使用条件逻辑又使用ISPICKVAL()函数来返回主角评分的公式。

在这个例子中,我们根据其收入,国家和来源对潜在客户进行评估。

  • Hot—AnnualRevenue大于100万美元,Country是美国,LeadSource是合作伙伴推荐。
  • Warm—AnnualRevenue 大于100万美元,Country是美国,LeadSource是购买清单或Web。
  • Cold—帐户不符合任何这些条件。

此公式使用一系列IF(),AND()和OR()语句来检查这些条件,并使用ISPICKVAL()评估Lead Source字段。该公式还使用CASE()语句来检查国家/地区。如果该国是美国,美国,美国或美国,则CASE()声明将返回美国。否则,它返回NA(不适用)。

选择树帮助我们更容易地遵循公式的逻辑流程。

This choice tree helps us visualize the lead rating formula.
  1. 在安装程序中,使用快速查找框来查找 Object Manager.
  2. 点击 Lead | Fields & Relationships 然后单 New.
  3. 选择Formula 并单击 Next.
  4. Field Label, 输入 Rating. 字段名称自动填充。
  5. 选择 Text 并单击 Next.
  6. 输入以下公式:
    IF(
      AnnualRevenue > 1000000 &&
      CONTAINS(CASE(Country, "United States", "US", "America", "US", 
        "USA", "US", "US", "US", "NA"), "US"),
      IF(
        ISPICKVAL(LeadSource, "Partner Referral"), "Hot",
        IF(
          ISPICKVAL(LeadSource, "PurchasedList") ||
          ISPICKVAL(LeadSource, "Web"),
          "Warm", "Cold"
        )
      ), "Cold"
    )

根据潜在客户的特征,新配方字段评分显示“热”,“热”或“冷”。

用CASE()显示图像

带有文本返回类型的公式对于不仅仅是文本而言是有用的 – 您也可以使用它们来显示图像。图像使信息一目了然,抓住用户的眼睛不仅仅是文本。让我们编写一个公式,使用您刚刚创建的评级字段以图形方式显示潜在客户评分为零星,一星,三星或五颗恒星。

IMAGE()函数最多需要四个参数。 IMAGE(image_url,alternate_text,height,width)以可选的height和width参数指定的尺寸显示由image_url指定的图像。如果图像无法显示,则该功能显示alternate_text。

如果主角评级是

  • Hot, 公式显示五颗星
  • Warm,公式显示三颗星
  • Cold, 公式显示一颗星

如果主角等级为空白,则公式不会显示星号。

使用文本返回类型和名称星级创建公式字段。在高级公式编辑器中,输入:

IMAGE(
  CASE(Rating__C,
    "Hot", "/img/samples/stars_500.gif",
    "Warm", "/img/samples/stars_300.gif",
    "Cold", "/img/samples/stars_100.gif",
    "/img/samples/stars_000.gif"),
"Unknown")
此公式使用内置于Salesforce中的图像,但是您可以使用自己的图像,方法是首先从“文档”选项卡上载图像。

文本示例

  1. 此公式使用美国帐户的帐单州/省字段将其分类为北,南,东,西或中央。
    IF(ISBLANK(BillingState), "None",
    IF(CONTAINS("AK:AZ:CA:HA:NV:NM:OR:UT:WA", BillingState), "West",
    IF(CONTAINS("CO:ID:MT:KS:OK:TX:WY", BillingState), "Central",
    IF(CONTAINS("CT:ME:MA:NH:NY:PA:RI:VT", BillingState), "East",
    IF(CONTAINS("AL:AR:DC:DE:FL:GA:KY:LA:MD:MS:NC:NJ:SC:TN:VA:WV", BillingState), "South",
    IF(CONTAINS("IL:IN:IA:MI:MN:MO:NE:ND:OH:SD:WI", BillingState), "North", "Other"))))))
  2. 该公式嵌入HYPERLINK()函数的链接。一般来说,HYPERLINK(url,display_text,target)显示一个到display_text的链接。可选的目标参数决定了单击链接时网页的显示方式。如果您将目标保留为空白,则默认情况下链接会在新的浏览器窗口中打开。
    HYPERLINK("https://www.salesforce.com", "Salesforce")
  3. 此公式接受Email字段并使用它来创建一个URL。该公式使用FIND()和SUBSTITUTE()在电子邮件地址中查找@符号,并用www替换它的左侧所有内容。
    SUBSTITUTE(Email, LEFT(Email, FIND("@", Email)), "www.")
    文本公式的常见错误

将值转换为文本。请确保在公式中使用它之前检查一个字段的类型。例如,以前的Salesforce管理员可能已经创建了一个将日期保存为文本值的自定义字段。如果是这种情况,可以使用TEXT()或DATEVALUE()来同时处理文本和日期值。

公式字段帮手

使用助手公式字段是使公式简洁易懂的好方法。辅助字段只做更大计算的一部分,并由结束公式字段引用。您可以使用任何公式类型的帮手公式字段,但现在我们来看一个示例。

假设您要编写名为Case_Category__c的文本公式,该公式根据案件已打开的时间长短显示案件的类别(绿色,黄色或红色)。通常情况下,你可能会写这样的东西。

IF(((NOT(IsClosed)) && (TODAY() - DATEVALUE(CreatedDate) > 20)), "RED",
 IF((NOT(IsClosed)) && (TODAY() - DATEVALUE(CreatedDate) > 10), "YELLOW",
 "GREEN"))
您可以通过将计算个案年龄的逻辑放入另一个公式字段来简化此公式。我们称这个字段为Case_Age_In_Days__c。
TODAY() - DATEVALUE(CreatedDate)
然后,我们可以像这样重写Case_Category__c。
IF(((NOT(IsClosed)) && (Case_Age_In_Days__c > 20)), "RED",
 IF((NOT(IsClosed)) && (Case_Age_In_Days__c > 10), "YELLOW",
 "GREEN"))
个公式不仅更短,更易于理解,而且还可以在需要计算案例年龄的任何地方重复使用助手公式。真棒!

公式(4)选项

学习目标

完成本单元后,您将能够:

  • 描述引用选取列表字段的公式的用例。
  • 在公式字段中使用选择列表功能。
  • 创建一个引用选项列表字段的公式。

在公式中使用选取列表的简介

选项列表字段允许您从预先填充的列表中选择一个值。虽然您无法撰写返回结果列表的公式,但您可能必须在公式字段中引用选取列表。

假设您需要验证规则,要求用户填写说明,如果他们选择“其他”作为帐户的类型。此验证规则公式要求用户填写文本字段“其他类型”(如果他们将帐户的“类型”设置为“其他”)。

ISPICKVAL(Type, "Other") &&
ISBLANK(Other_Type__c)
如果当“类型”设置为“其他”时,用户将Other_Type__c留为空白,则会触发验证规则,并且用户无法保存表单。

常见的选项列表函数和操作符

三个函数将picklist值作为所有公式字段中的参数:ISPICKVAL(),CASE()和TEXT()。

如果picklist_field的值与text_value匹配,则ISPICKVAL(picklist_field,text_value)返回true,否则返回false。您可以将ISPICKVAL()与PRIORVALUE()结合使用。您可以在分配规则,验证规则,字段更新和工作流程规则中使用此函数来查找字段的先前值。

例如,此验证规则可防止用户将案例的类型从先前选定的值更改为空白。

NOT(ISPICKVAL(PRIORVALUE(Type), "")) &&
ISPICKVAL(Type, "")

如果Type的先前值不为空且当前值为,则触发验证规则。

CASE()对于根据选取列表的值编写具有不同结果的公式很有用。带有Number返回类型的此公式根据其类型为案例分配优先级。

CASE(Type,
  "Electrical", 1,
  "Electronic", 2,
  "Mechanical", 3,
  "Structural", 4,
  "Other", 5,
5)

该公式将Type与每种情况进行比较,并在发现匹配时指定优先级。电子案例优先级为1,电子案例2,等等。

TEXT()将选取列表值转换为组织主语言的文本值,而不是当前用户的语言。在将选取列表值转换为文本值之后,可以在其上使用文本函数,例如BEGINS()和CONTAINS()。

例如,这个公式将一个案件的状态显示为一个句子。

"This case is " & TEXT(Status)
注意

您不能在多选选项列表上使用TEXT()。公式字段中不推荐多选择选项列表。

在公式中使用选项列表字段

基于选择列表创建验证规则

选项列表值通常决定了记录中的哪些其他字段是必需的。 ISPICKVAL()和CASE()可用于创建验证规则,以检查是否选择了某个选项列表值。例如,假设您希望用户在将案例的“状态”选项列表值更改为“已升级”时输入原因。

首先,在Case对象上创建自定义文本字段升级原因。

  1. 在安装程序中,使用快速查找框来查找 Object Manager.
  2. 点击 Case | Fields & Relationships 然后单击 New.
  3. 选择 Text Area 并单击 Next.
  4. Field Label, 输入 Reason for Escalating.字段名称自动填充。
  5. 点击 Next.
  6. 再次单击 Next 然后单击 Save.

现在使用状态选项列表字段来设置升级原因的验证规则。

  1. 单击新创建的升级原因字段。
  2. 在验证规则下,单击 New.
  3. Rule Name, 输入 Reason_Required.
  4. Error Condition Formula, 输入以下验证规则:
    AND(
      ISPICKVAL(Status, "Escalated"),
      ISBLANK(Reason_for_Escalating__c)
    )
  5. Error Message, 输入Please enter a reason for changing the case status to Escalated.
  6. 点击 Save.

验证规则确保如果状态设置为“升级”,升级原因不为空白。通过将案例状态更新为升级并保存记录来测试公式,而不输入升级原因。该窗体显示在升级原因字段下的错误消息。

Users who do not set a Reason for Escalating will see this error message.

指定联系人的优先级

如果您希望根据关联的帐户评分为联系人分配优先级,那么选项列表字段会怎样?对于此公式,我们使用联系人的帐户评级的交叉对象参考以及我们在复选框公式中使用基本逻辑中创建的行政复选框公式字段。 Executive是否检查联系人的标题是否包含“Executive”,“President”或“Chief”等字样。

因为有三种可能的账户评级 – 热,温或冷 – 以及执行检查或未检查的两种选择 – 总共有六种情况。我们将使用CASE()根据以下条件为每种可能性分配优先级。

Account.Rating Is_Executive_c 优先级
Hot Yes 1
Hot No 1
Warm Yes 1
Warm No 2
Cold Yes 2
Cold No 3

在名称为Priority并且类型为Number的联系人对象上创建一个公式字段。

  1. 在安装程序中,使用快速查找框来查找 Object Manager.
  2. 点击 Contact | Fields & Relationships 然后单击 New.
  3. 选择 Formula 并单击 Next.
  4. Field Label, 输入 Priority. 字段名称自动填充。
  5. 选择 Number, 并将小数位数更改为0
  6. 点击 Next.
  7. 输入以下公式:
    CASE(Account.Rating,
      "Hot", 1,
      "Warm", IF(Is_Executive__c, 1, 2),
      "Cold", IF(Is_Executive__c, 2, 3),
    3)
    在这个公式中,我们在更大的CASE()语句中使用IF()语句来更有效地检查所有六种情况。

选项列表示例

  1. 此公式根据自定义选项列表字段合同状态和自定义日期字段合同激活日期返回帐户被激活后的天数。如果合同状态未激活,则该字段为空。
    IF(ISPICKVAL(Contract_Status__c, "Activated"),
      TODAY() - Contract_Activated_Date__c, null)
  2. 此公式在合同对象上使用自定义日期字段Payment Due Date和自定义选项列表字段Payment Status以及Paid和Unpaid选项。如果“付款状态”为“未付”且已超过付款到期日,公式字段将显示逾期付款!否则,该字段为空。
    IF(AND(Payment_Due_Date__c < TODAY(), 
      ISPICKVAL(Payment_Status__c,
      "UNPAID")),
      "Payment overdue!", null)
  3. 如果有人试图将潜在客户的状态从“已关闭 – 已转换”或“关闭 – 未转换”更改为“打开 – 未联系”,此验证规则使用ISPICKVAL()和PRIORVALUE()显示错误。
    ISPICKVAL(Status, "Open - Not Contacted") &&
    BEGINS(TEXT(PRIORVALUE(Status)), "Closed")
    如果用户将关闭状态从关闭状态更改为打开状态,则在尝试保存记录时会看到错误。
    The error message a user sees when they violate the validation rule.

挑选清单的常见错误

  • 唯一可以将选取列表字段作为所有公式字段中的参数的函数是ISPICKVAL(),CASE()和TEXT()。在其他函数中使用选项列表值会导致错误。例如,此复选框公式字段旨在显示一个复选框,用于指示潜在顾客源是否是“合作伙伴推荐”。等号运算符(=),但是,不支持选项列表字段,并且此公式导致一个错误。

    LeadSource = "Partner Referral"
    相反,使用ISPICKVAL()检查选择列表字段的值,或者在使用equals运算符之前使用TEXT()将选取列表值转换为文本。
    ISPICKVAL(LeadSource, "Partner Referral")
    TEXT(LeadSource) = "Partner Referral"