Quick StartThe ReportMagic MenuReport StudioFilesSchedulesBatch JobsReport JobsDashboardsProfileAdminAccount DetailsGetting StartedAbout ReportMagicRegistering and Logging InReport LibrarySearching ReportMagicConnections and AgentsWriting ReportsStarting Out With Report StudioCreating Report TemplatesRMScriptMacro ShorthandReporting on Different Periods of TimeSetting Macro Parameter DefaultsStoring Input and Output FilesReport VariablesUsing Variable ParametersSpecifying How Graphs LookStep-by-Step LogicMonitor Graph ExamplesStep-by-Step Jira Graph ExamplesSpecifying How Tables LookChanging Fonts and ColorsUsing Macros in PowerPoint TemplatesRestricted MacrosGenerating Reports Using SchedulesUsing HTML Forms in SchedulesSeeing How Reports RanViewing ReportsCached ValuesUsing AggregationsAdvanced Report StudioAdvanced [Object.Graph:] MacroAPI AccessREST APIREST API - FilesAdvancedRole-Based Access Control (RBAC)SecurityMiscellaneousBadgesCertificationsTips, Tricks and Shortcut KeysMacrosAgentAgent.ConnectionAgent.ExecuteAgent.MonitorMagicNodeListAgent.MonitorMagicNodeMeasurementListAgent.MonitorMagicNodeMeasurementSummaryAgent.MonitorMagicNodePropertyListAgent.MonitorMagicNodeTypeListAgent.PropertyAgent.SqlAnalysisAgent.SqlGraphAgent.SqlListAgent.SqlTableAgent.SqlValueAgent.SqlValuesAgent.WebQueryAlertMagicAlertMagic.MetricsGraphAlertMagic.MetricsListAlertMagic.StatisticsAutoTaskAutoTask.AccountListAutoTask.AccountPropertyAutoTask.ConnectionAutoTask.CountAutoTask.FieldListAutoTask.FieldPropertyAutoTask.ListAutoTask.PropertyAutoTask.SummaryValueAutoTask.TicketListAutoTask.TicketPropertyAzureAzure.ConnectionAzure.LogAnalyticsGraphAzure.LogAnalyticsQueryAzure.LogAnalyticsScalarAzure.LogAnalyticsTableAzure.ResourceGroupListAzure.ResourceListAzure.ResourcePropertiesAzure.SentinelAlertRuleListAzure.SentinelConnectorListAzure.SentinelIncidentListAzure.SentinelThreatIndicatorListAzure.SentinelThreatIndicatorMetricListAzure.SubscriptionListBloggerBlogger.BlogPropertyBlogger.ConnectionBlogger.PageBlogger.PageListBlogger.PagePropertyBlogger.PostBlogger.PostListBlogger.PostPropertyCacheCache.ExpiresCache.GetCache.IsSetCache.SetCache.UnsetCertifyCertify.ConnectionCertify.DepartmentListCertify.DepartmentPropertyCherwellCherwell.BusinessObjectDefinitionListCherwell.BusinessObjectListCherwell.BusinessObjectSchemaCherwell.BusinessObjectSummaryCherwell.ConnectionCiscoCisco.ConnectionCisco.FirmwareVersionPropertyCisco.SecurityAdvisoryListCisco.SerialNumberPropertyCisco.SoftwareSuggestionListCiscoDnaCenterCiscoDnaCenter.ConnectionCiscoDnaCenter.SiteListCiscoDnaCenter.SitePropertyCloudHealthCloudHealth.AssetDetailsCloudHealth.AssetListCloudHealth.AvailableReportDimensionsCloudHealth.AvailableReportOptionsCloudHealth.AvailableReportsListCloudHealth.AwsAccountDetailsCloudHealth.AwsAccountsListCloudHealth.ConnectionCloudHealth.CustomerDetailsCloudHealth.CustomerListCloudHealth.CustomerReportDetailsCloudHealth.CustomerStatementDetailsCloudHealth.OrganisationAccountsListCloudHealth.OrganisationListCloudHealth.QueryCodacyCodacy.ConnectionCodacy.ListConnectWiseManageConnectWiseManage.ConnectionConnectWiseManage.CountConnectWiseManage.DictionaryConnectWiseManage.ListConnectWiseManage.PropertyCoreArrayArray.CountBreakBreakpointCalculateColorCommentContinueConvertDeleteDeleteRowDocumentBookmarkDocumentBreakDocumentInsertSectionDocumentSectionEmailEmailFileEmailReportExecuteForEachFormatTableCellFormatTableRowIfIgnoreIncInsertTableCellImageIsSetLinearRegressionLinkMapObjectRandomRegexRepeatRowSearchAndReplaceSectionSettingsSleepStopStopwatchStringStringIndexSubstringSwitchThrowExceptionUnsetWarningWhileDatabaseDatabase.ConnectionDatabase.GraphDatabase.ListDatabase.TableDatabase.ValueDatabase.ValuesDataMagicDataMagic.SyncDictionaryDictionary.ItemDictionary.KeysDictionary.ValuesDocumentDocument.SetPropertiesDropBoxSignDropBoxSign.ConnectionFileFile.CopyFile.CopyOutputFilesFile.Csv.CellFile.Csv.RowFile.Csv.RowCountFile.Csv.TableFile.EmbedFile.ExecuteFile.ExistsFile.ImageFile.InsertFile.ListFile.LoadListFile.LoadObjectFile.LoadStringFile.LoadVariablesFile.SaveObjectFile.Xlsx.CellFile.Xlsx.RowFile.Xlsx.RowCountFile.Xlsx.TableFunctionFunction.CallFunction.DefineGoogleGoogle.ConnectionGoogle.TableGraphGraph.AddDataGraph.DeleteDataGraph.RenameDataGraph.UpdateGravatarGravatar.ImageHaloPsaHaloPsa.ConnectionHaloPsa.ListHighlightHighlight.BearerSummaryHighlight.BroadbandSummaryHighlight.CellularSummaryHighlight.ConnectionHighlight.FolderListHighlight.HttpServerPerformanceSummaryHighlight.IcmpTcpUdpPerformanceSummaryHighlight.MosPerformanceSummaryHighlight.PrecisionPerformanceSummaryHighlight.TunnelSummaryHighlight.WatchNodeListHighlight.WirelessAccessPointSummaryHubSpotHubSpot.ListHubSpot.PropertyHubSpot.QueryJarrayJarray.TableJiraJira.AttachmentImageJira.AttachmentListJira.AttachmentPropertyJira.ConnectionJira.GraphJira.InsertMarkupJira.IssueAnalysisJira.IssueCommentListJira.IssueCommentPropertyJira.IssueLastCommentPropertyJira.IssueListJira.IssuePropertyJira.IssueResponseTimeJira.LastImageJira.StatusListJira.TableJira.TimeInStateJira.UserListJira.UserPropertyJsonJson.ItemJson.ListKrokiKroki.ImageListList.AddList.AnalysisList.ComplementList.CountList.DequeueList.DuplicatesList.FirstList.GraphList.GroupByList.IndicesOfList.IntersectionList.ItemList.RangeList.SelectList.SelectColumnsList.SortList.SummaryValueList.TableList.UnionList.WhereLogicMonitorLogicMonitor.AccountPropertyLogicMonitor.AlertAnalysisLogicMonitor.AlertCalendarLogicMonitor.AlertCountLogicMonitor.AlertListLogicMonitor.AlertMapLogicMonitor.AlertPropertyLogicMonitor.AlertRuleListLogicMonitor.AlertRulePropertyLogicMonitor.AlertStatusLogicMonitor.AlertTableLogicMonitor.AppliesToFunctionListLogicMonitor.AppliesToFunctionPropertyLogicMonitor.AppliesToListLogicMonitor.AuditEventAnalysisLogicMonitor.BigNumberWidgetValuesLogicMonitor.ClearCacheLogicMonitor.CollectorExecuteLogicMonitor.CollectorGroupListLogicMonitor.CollectorGroupPropertyLogicMonitor.CollectorListLogicMonitor.CollectorPropertyLogicMonitor.CollectorVersionListLogicMonitor.CollectorVersionPropertyLogicMonitor.ConfigCheckListLogicMonitor.ConfigCheckPropertyLogicMonitor.ConfigSourceGroupListLogicMonitor.ConfigSourceListLogicMonitor.ConfigSourcePropertyLogicMonitor.ConfigSourceXmlLogicMonitor.ConnectionLogicMonitor.ConnectionApiTokenLogicMonitor.ConvertToLiveWidgetLogicMonitor.DashboardLogicMonitor.DashboardGroupListLogicMonitor.DashboardGroupPropertyLogicMonitor.DashboardListLogicMonitor.DashboardPropertyLogicMonitor.DashboardWidgetListLogicMonitor.DatamartSyncLogicMonitor.DataPointListLogicMonitor.DataPointPropertyLogicMonitor.DataSourceGraphListLogicMonitor.DataSourceGraphPropertyLogicMonitor.DataSourceGroupListLogicMonitor.DataSourceListLogicMonitor.DataSourcePropertyLogicMonitor.DataSourceXmlLogicMonitor.DeviceConfigSourceFileLogicMonitor.DeviceConfigSourceInstanceListLogicMonitor.DeviceConfigSourceListLogicMonitor.DeviceConfigSourcePropertyLogicMonitor.DeviceCountLogicMonitor.DeviceDataSourceListLogicMonitor.DeviceDataSourcePropertyLogicMonitor.DeviceGroupListLogicMonitor.DeviceGroupPropertyLogicMonitor.DeviceListLogicMonitor.DevicePropertyLogicMonitor.DeviceSlaWidgetPropertyLogicMonitor.DeviceTableLogicMonitor.EscalationChainDestinationListLogicMonitor.EscalationChainDestinationPropertyLogicMonitor.EscalationChainListLogicMonitor.EscalationChainPropertyLogicMonitor.EventSourceFilterListLogicMonitor.EventSourceFilterPropertyLogicMonitor.EventSourceGroupListLogicMonitor.EventSourceListLogicMonitor.EventSourcePropertyLogicMonitor.EventSourceXmlLogicMonitor.FinancialInformationLogicMonitor.ForecastLogicMonitor.GraphLogicMonitor.GraphSpecificationLogicMonitor.HistoricSdtListLogicMonitor.ImageLogicMonitor.InstanceAnalysisLogicMonitor.InstanceCountLogicMonitor.InstanceDetailsTableLogicMonitor.InstanceGroupCountLogicMonitor.InstanceGroupListLogicMonitor.InstanceListLogicMonitor.InstancePropertyLogicMonitor.IntegrationListLogicMonitor.IntegrationPropertyLogicMonitor.JobMonitorListLogicMonitor.JobMonitorPropertyLogicMonitor.LastMeasurementLogicMonitor.LogAnalysisLogicMonitor.LogicModuleMetadataPropertyLogicMonitor.LogicModuleUpdateListLogicMonitor.LogicModuleUpdatePropertyLogicMonitor.LogItemListLogicMonitor.NetscanGroupListLogicMonitor.NetscanGroupPropertyLogicMonitor.NetscanListLogicMonitor.NetscanPropertyLogicMonitor.NewUserMessagePropertyLogicMonitor.PaymentInformationLogicMonitor.PercentageAvailabilityLogicMonitor.PortalVersionLogicMonitor.PropertySourceGroupListLogicMonitor.PropertySourceJsonLogicMonitor.PropertySourceListLogicMonitor.PropertySourcePropertyLogicMonitor.QueryLogicMonitor.RecipientGroupListLogicMonitor.RecipientGroupPropertyLogicMonitor.RecycleBinItemListLogicMonitor.RecycleBinItemPropertyLogicMonitor.ReportGroupListLogicMonitor.ReportGroupPropertyLogicMonitor.ReportListLogicMonitor.ReportPropertyLogicMonitor.ResourceAnalysisLogicMonitor.ResourceGroupAnalysisLogicMonitor.RoleListLogicMonitor.RolePropertyLogicMonitor.SdtListLogicMonitor.SdtPercentageLogicMonitor.SdtPropertyLogicMonitor.SingleSignOnPropertyLogicMonitor.SlaWidgetValuesLogicMonitor.SnmpSysOidMapListLogicMonitor.SnmpSysOidMapPropertyLogicMonitor.SummaryValueLogicMonitor.SummaryValueListLogicMonitor.ThresholdLogicMonitor.TrafficTableLogicMonitor.UnmonitoredDeviceListLogicMonitor.UnmonitoredDevicePropertyLogicMonitor.UserApiTokenListLogicMonitor.UserApiTokenPropertyLogicMonitor.UserListLogicMonitor.UserPropertyLogicMonitor.WebsiteCheckpointDataListLogicMonitor.WebsiteCountLogicMonitor.WebsiteGroupAnalysisLogicMonitor.WebsiteGroupCountLogicMonitor.WebsiteGroupListLogicMonitor.WebsiteGroupPropertyLogicMonitor.WebsiteListLogicMonitor.WebsitePropertyLogicMonitor.WidgetStatusMagicSuiteMagicSuite.ApplyBrandMagicSuite.BadgeListMagicSuite.ConnectionMagicSuite.ConnectionListMagicSuite.ConnectionPropertyMagicSuite.ConnectionStatusPropertyMagicSuite.FeedbackListMagicSuite.FeedbackPropertyMagicSuite.GlobalSettingPropertyMagicSuite.MacroGroupListMagicSuite.MacroHelpMagicSuite.MacroListMagicSuite.ReportBatchJobCountMagicSuite.ReportBatchJobListMagicSuite.ReportBatchJobPropertyMagicSuite.ReportConnectionSummaryMagicSuite.ReportJobCountMagicSuite.ReportJobListMagicSuite.ReportJobPropertyMagicSuite.ReportMacroCountMagicSuite.ReportPropertyMagicSuite.ReportScheduleCountMagicSuite.ReportScheduleListMagicSuite.ReportSchedulePropertyMagicSuite.SetReportPropertyMagicSuite.SubscriptionListMagicSuite.SystemPropertyMagicSuite.TenantImageMagicSuite.TopicHelpMagicSuite.VersionMerakiMeraki.CameraImageMeraki.ConfigurationChangeListMeraki.ConnectionMeraki.DevicePropertyMeraki.DeviceUplinkPropertyMeraki.EndOfLifeMeraki.NetworkClientListMeraki.NetworkDeviceListMeraki.NetworkEventListMeraki.NetworkListMeraki.NetworkPropertyMeraki.NetworkSwitchPortsListMeraki.NetworkSwitchStackListMeraki.OrganizationDeviceLicenseListMeraki.OrganizationDeviceLicensePropertyMeraki.OrganizationDeviceListMeraki.OrganizationDeviceListStatusPropertyMeraki.OrganizationInventoryListMeraki.OrganizationLicenseStatePropertyMeraki.OrganizationListMeraki.OrganizationPropertyMeraki.OrganizationUplinkUsageMeraki.WirelessNetworkClientConnectionStatsPropertyMeraki.WirelessNetworkClientLatencyListMeraki.WirelessNetworkClientsConnectionStatsListMeraki.WirelessNetworkClientsLatencyListMeraki.WirelessNetworkConnectionStatsPropertyMeraki.WirelessNetworkDeviceConnectionStatsPropertyMeraki.WirelessNetworkDeviceLatencyListMeraki.WirelessNetworkDevicesConnectionStatsListMeraki.WirelessNetworkDevicesLatencyListMeraki.WirelessNetworkLatencyListMicrosoftDataverseMicrosoftDataverse.ConnectionMicrosoftDataverse.CountMicrosoftDataverse.EntityDefinitionsListMicrosoftDataverse.EntityListMicrosoftDataverse.EntityPropertyListMicrosoftDataverse.ListMicrosoftDataverse.PropertyMicrosoftGraphMicrosoftGraph.ConnectionMicrosoftGraph.QueryObjectObject.ArrayCountObject.GraphObject.PropertyObject.TypeObject.UnpackObject.UnpackVariablesOpenAiOpenAi.AnswerOpenAi.CompleteOpenAi.ConnectionOpenAi.ImageQuickBooksQuickBooks.ConnectionQuickBooks.PropertySalesforceSalesforce.ConnectionSalesforce.ListSalesforce.PropertyServiceNowServiceNow.ConnectionServiceNow.CountServiceNow.CreateServiceNow.DeleteServiceNow.DictionaryServiceNow.ListServiceNow.PropertyServiceNow.UpdateShapeShape.AddShape.CloneShape.DeleteShape.FormatShape.HideShape.SetPropertyShape.SetTextSideroLabsOmniSideroLabsOmni.ConnectionSideroLabsOmni.ListSideroLabsOmni.ObjectSlackSlack.ConnectionSlack.MessageSlideSlide.DeleteSlide.DeleteSectionSlide.LinkSlide.MoveToSlide.RepeatSmtpSmtp.ConnectionSnmpSnmp.EnterprisePropertySolarWindsSolarWinds.ConnectionSolarWinds.SqlListSolarWinds.SqlTableSolarWindsServiceDeskSolarWindsServiceDesk.ConnectionSolarWindsServiceDesk.ListSolarWindsServiceDesk.PropertySqlSql.AnalysisTableTable.ColumnCountTable.DeleteTable.FormatTable.GraphTable.MergeCellsTable.MergeRowsTable.RowCountTable.SaveTable.SortTable.WorldMapTimeCalendarCronHumanReadableCronRunDateDateRangeDateTimeDateTime.IsInWorkHoursDateTime.WorkHoursDurationTimeSpanTogglToggl.ClientListToggl.ClientPropertyToggl.ConnectionToggl.ProjectListToggl.ProjectPropertyToggl.ProjectReportPropertyToggl.TimeEntryListToggl.TimeEntryPropertyToggl.UserListToggl.UserPropertyToggl.WorkspaceListToggl.WorkspacePropertyTwilioTwilio.ConnectionTwilio.SmsUkParliamentUkParliament.PetitionCountUkParliament.PetitionListUkParliament.PetitionPropertyVariableVariable.ImageVariable.ListVariable.PropertyWebWeb.ConnectionWeb.HtmlWeb.ImageWeb.QueryWeb.ScreenshotWeb.TableWeb.TextXlsxXlsx.AddAnalysisXlsx.EmbedZendeskZendesk.ConnectionZendesk.ListZendesk.PropertyZoho.DeskZoho.Desk.ZohoListZoho.Desk.ZohoProperty
[If:]

Conditionally process a section of the input document.


Compatibility

The macro can be used in all input document types and in Report Studio.


Usage

	[If:condition=<condition>]
		<Section of document to optionally include if the condition is true>
	[EndIf:]
...or...
	[If: condition=<condition>]
		<Section of document to optionally include if the condition IS true>
	[Else: ]
		<Section of document to optionally include if the condition IS NOT true>
	[EndIf: ]
...or...
	[If: condition=<condition 1>]
		<Section of document to optionally include if condition 1 is true>
	[ElseIf: condition=<condition 2>]
		<Section of document to optionally include if condition 2 is true>
	[Else: ]
		<Section of document to optionally include if neither condition is true>
	[EndIf: ]
...or...
	[If:condition=<condition 1>]<Section of document to optionally include if condition 1 is true>[ElseIf:condition=<condition 2>]<Section of document to optionally include if condition 2 is true>[EndIf:]

Notes

Unlike the examples above, try NOT including newline characters to retain full control over your formatting.

In the last example above, noting the lack of carriage returns, there is no output at all if neither condition is met.

The relational operators used in many common, C-like computer languages can be used for comparisons:

  • == : 'is equal to'
  • != : 'is not equal to'
  • < : 'is less than'
  • > : 'is greater than'
  • <= : 'is less than or equal to'
  • >= : 'is greater than or equal to'

When comparing strings, the strings should be enclosed in single quotes. For example [If: condition=" 'A' == '{Value}' "].

[If:] macros can be nested (see examples).

All functions supported by the [Calculate:] macro are also supported by this macro.

.


Parameters (11)
Mandatory (1)
Parameter TypePurpose Options Default
condition
StringThe section condition. Must either evaluate to true or false, for example: "3+5=8" or "contains('abcd', 'z'), N/A N/A
Behaviour (4)
Parameter TypePresencePurpose Options Default
errorOnOverflow
BooleanOptionalShould NCalc expression evaluation throw error on Overflow
  • true
  • false
true
mode
MacroModeOptionalThe mode in which variables are stored. In the legacy mode (default for Schedules), the variable created is a string and formatted. In the normal mode (default for Report Studio), the output variable is stored as a strongly-typed theObject, e.g. an Int32 or a List etc., rather than a formatted string.
  • Legacy
  • Normal
Legacy
obfuscation
ObfuscationTypeOptionalObfuscation type. Use obfuscation to write reports where sensitive data is hidden. When used, ReportMagic guarantees that the same input string will map to the same output string for the whole of the report (but the next time the report runs, it will most likely map to a different value). If you use obfuscation, the property in your macro will not show up and instead, you will see a fake item of the obfuscation type chosen.
  • None
  • UkTown
  • DeviceName
  • Company
  • IpAddress
  • PrivateIpAddress
None
warning
StringOptionalIf specified, adds a warning message for this macro. This is processed as an NCalc, and the warning message will ALWAYS be present and will be the value of the evaluated NCalc expression. N/A N/A
Filtering & Sorting (1)
Parameter TypePresencePurpose Options Default
condition
StringMandatoryThe section condition. Must either evaluate to true or false, for example: "3+5=8" or "contains('abcd', 'z'), N/A N/A
Output (2)
Parameter TypePresencePurpose Options Default
failureText
StringOptionalThe text to display should the macro fail to execute. Note that a poorly-specified macro (e.g. omitting mandatory parameters) will still result in an error message. N/A N/A
failureVariable
StringOptionalThe name of a variable to create should the macro fail to execute. The variable will be a text variable, and will contain either the failure text (only if the failureText parameter is set), otherwise it will contain the exception / failure message. N/A N/A
General (4)
Parameter TypePresencePurpose Options Default
comment
StringOptionalAdd a comment to make your document template more readable. The comment is discarded in the output document. N/A N/A
desiredExecutionResult
ExecutionResultOptionalIf specified, asserts the expected execution result of the macro. The macro executes normally; if the actual result matches the desired value, the result is converted to Success. If the actual result does not match, the result is converted to MacroError with a descriptive message. This is primarily used for testing and diagnostic purposes. Valid values are: Unknown, Success, MacroError, WorkerStopped, Running, Warning, NeverRun, Cancelled, Pending, Paused, SystemError, Deferred, Stopped.
  • Cancelled
  • Deferred
  • MacroError
  • NeverRun
  • Paused
  • Pending
  • Running
  • Stopped
  • Success
  • SystemError
  • Warning
  • WorkerStopped
N/A
expectedType
StringOptionalIf specified, asserts the expected output type of the macro result. The macro executes normally; if the actual type does not match, a macro error is generated. Requires 'storeAs', 'storeAsHidden', or 'storeFormattedValueAs' to be set for typed validation. Valid types include CLR names (e.g. Int32, Int64, Single, Double, Boolean, String, JArray, JObject) and C# keyword aliases (e.g. int, long, float, double, bool, string, uint, ulong, short, ushort, byte, sbyte, decimal, char, object). The special value 'Number' matches any numeric type. N/A N/A
expectedValue
StringOptionalIf specified, asserts the expected output value of the macro result. The macro executes normally; if the actual value does not match, a macro error is generated. When 'storeAs' or 'storeAsHidden' is set, the stored variable value is compared. Otherwise, the document output text is compared. N/A N/A

Examples (11)

Example 1
[If: condition=1>2]The first condition is true. 1 is larger than 2.[Else: ]The condition is false. 1 is actually smaller than 2.[EndIf:]
Outputs: The condition is false. 1 is actually smaller than 2.

Example 2
[If: condition=1>2]The condition is true. 1 is a larger than 2.[ElseIf: condition=1<3]The second condition is true. 1 is smaller than 3.[EndIf:]
Outputs: The second condition is true. 1 is smaller than 3.

Example 3
[If: condition=1>2]The first condition is true. 1 is larger than 2[ElseIf: condition=1>3]The second condition is true. 1 is smaller than 3.[Else: ]Both conditions are false. 1 is not larger than 2 or 3.[EndIf:]
Outputs: Both conditions are false. 1 is not larger than 2 or 3

Example 4

Does ABC contain the letter B?

[If: condition="contains('ABC', 'B')"]Yes, ABC contains the letter B.[Else:]No, ABC does not contain the letter B.[EndIf:]
Outputs: Yes, ABC contains the letter B.

Example 5

Does ABC contains the letter Z?

[If: condition="contains('ABC', 'Z')"]Yes, ABC contains the letter Z.[Else:]No, ABC does not contain the letter Z.[EndIf:]
Outputs: No, ABC does not contain the letter Z.

Example 6

Does ABC start with the letter A?

[If: condition="startsWith('ABC', 'A')"]Yes, ABC starts with the letter A.[Else:]No, ABC does not start with the letter Z.[EndIf:]
Outputs: Yes, ABC starts with the letter A.

Example 7

Does ABC end with the letter A?

[If: condition="endsWith('ABC', 'A')"]Yes, ABC ends with the letter A.[Else:]No, ABC does not end with the letter A.[EndIf:]
Outputs: No, ABC does not end with the letter A.

Example 8

Does ABC end with the letter A or C?

[If: condition="endsWith('ABC', 'A')"]Yes, ABC ends with the letter A.[ElseIf: condition="endsWith('ABC', 'C')"]Yes, ABC ends with the letter C.[Else:]Both conditions failed. ABC does not end with A or C.[EndIf: ]
Outputs: Yes, ABC ends with the letter C.

Example 9

Does 5 + (does 1 = 2 ? if so, choose 3, otherwise choose 4) equal 9? Note the first statement has a conditional if, testing whether 1 equals 2 (no) so falling back to 4, so the first If statement then becomes '5 + 4 = 9'.

[If: condition="5 + if(1=2, 3, 4) = 9"]Yes, the sum of 5 + 4 = 9.[Else:]No, the sum of 5 + 4 is not 9.[EndIf:]
Outputs: Yes, the sum of 5 + 4 = 9.

Example 10

Test whether a variable, previously generated via a String macro, ends with a certain character. Note that variables can be referenced directly in a condition clause without curly brackets.

[String: value=JKL, storeAsHidden=X][If: condition="endsWith(X, 'L')"]Yes, JKL ends with the letter L.[EndIf:]
Outputs: Yes, JKL ends with the letter L.

Example 11

A nested If example:

[If: condition=2>1]2 is larger than 1.[If: condition=4>3] And 4 is larger than 3.[EndIf:][EndIf:]
Outputs: 2 is larger than 1. And 4 is larger than 3.
An unhandled error has occurred. Reload 🗙