Conditions¶
General¶
text
¶
Checks whether the given search
text appears in the event.
- To set where the text must appear, use one of the following:
- Specify
field
withTITLE
,DESCRIPTION
,LOCATION
orANY
. - Specify the key of a property to check using
property
. - If neither
field
norproperty
are specified, the condition will check the title, description and location fields.
- Specify
- Optionally, specify
mode
withSTART
,END
,EQUAL
orCONTAIN
to set where the given text must appear in the field or property.CONTAIN
is the default.
{
"type": "text",
"search": "Lunch break",
"field": "TITLE"
}
{
"type": "text",
"search": "Presales:",
"property": "jira.project.name",
"mode": "START"
}
eventtype
¶
-
Specify either a single type via
is
or a list viaoneOf
.Value Meaning DEFAULT
A regular event. MEETING
A meeting invitation with at least one attendee.
{
"type": "eventtype",
"is": "MEETING"
}
Compatibility note
When accessing Microsoft calendars using iCalendar addresses, meetings cannot be distinguished from other events.
status
¶
Checks the status of the event.
- Specify either a single status via
is
or a list viaoneOf
. - Possible values are
FREE
,WORKING_ELSEWHERE
,TENTATIVE
,BUSY
,OUT_OF_OFFICE
orUNKNOWN
.
{
"type": "status",
"is": "BUSY"
}
Compatibility note
Not all values are supported by all systems. For details, see the "Status" table.
visibility
¶
Checks the visibility of the event.
- Specify either a single status via
is
or a list viaoneOf
. - Possible values are
NORMAL
,PERSONAL
,CONFIDENTIAL
,PRIVATE
,UNSPECIFIED
orPUBLIC
.
{
"type": "visibility",
"is": "PRIVATE"
}
Compatibility note
Not all values are supported by all systems. For details, see the "Visibility" table.
creator
¶
Checks who created the event. Usually, this is the calendar owner, but if calendars are shared it may be someone else.
- Specify either a single email address via
is
or a list viaoneOf
.
{
"type": "creator",
"is": "oyana.tamru@example.com"
}
Compatibility note
This is only supported when accessing Google Calendar via a linked account. Microsoft does not offer a way to retrieve this information.
filled
¶
Checks whether the given field is filled.
- Specify
field
withDESCRIPTION
orLOCATION
.
{
"type": "filled",
"field": "LOCATION"
}
Details
A field is considered filled if its value is non-empty and does not consist entirely of whitespace (e.g. spaces, tabs, line breaks).
If HTML formatting tags are present, that alone does not count as a filled field; there must be visible text as well.
property
¶
Checks whether the source event has a property with the given key
.
- Optionally, specify either a single value via
is
or a list viaoneOf
. - Value matching is case-insensitive unless
matchCase
is specified astrue
.
{
"type": "property",
"key": "google:color.name",
"oneOf": [
"flamingo",
"tomato",
"tangerine"
]
}
limit
¶
Limits synchronization to the given number of events.
- Use
count
to specify the event limit as a number greater than or equal to 1. - Optionally, you can apply that number to a period by specifying
per
with a value ofDAY
,WEEK
,MONTH
,QUARTER
orYEAR
. For example, you can use this to synchronize only the first event each day and ignore the others.
{
"type": "limit",
"count": 10
}
{
"type": "limit",
"count": 1,
"per": "DAY"
}
First day of week
The first day of the week is Monday as defined by the ISO-8601 standard.
If that does not match your needs, we would love to hear from you! Please email a description of your use case to support@chronolink.app. We will either help you set it up using a combination of conditions or change ChronoLink so users can configure this.
Date and time¶
time
¶
Checks whether the event is on certain days of week or within certain time ranges.
Use at least one of the following:
-
Specify
onlyOn
to ensure the event concerns any of the given days of week, specifyexceptOn
to ensure it does not. -
Specify
onlyDuring
to ensure the event concerns any of the given time ranges, specifyexceptDuring
to ensure it does not.
{
"type": "time",
"onlyOn": "Mon-Fri",
"onlyDuring": "9-17"
}
{
"type": "time",
"exceptOn": "Wednesday"
}
- An event concerns a period of time (time range or day of week) if either
- one contains the other, or
- the two overlap each other to some degree.
- Days of week can be specified using their full English names or abbreviated to 2 or more letters. Matching is case-insensitive, spaces are ignored.
- Specify multiple days separated with commas (
Tue, Sat
), ranges with hyphens (Mon-Fri
) or a combination of both (Tue-Fri, Sun
).
- Specify multiple days separated with commas (
- Time ranges consist of start and end time separated by a hyphen. Spaces around the hyphen are ignored.
- Each time can be specified as a single number (24-hour format) or with hours and minutes separated by a colon. For example, 5 o’clock in the afternoon can be written as
17
or17:00
. - Time ranges may span midnight, e.g.
22:00-6:00
.
- Each time can be specified as a single number (24-hour format) or with hours and minutes separated by a colon. For example, 5 o’clock in the afternoon can be written as
daterange
¶
Checks that the event is in a certain date range. Date format is 2022-01-31+02:00
.
- Specify either
start
,end
or both:- Specify
start
to ensure the event starts on or after the given date. - Specify
end
to ensure the events ends before the given date.
- Specify
{
"type": "daterange",
"start": "2022-06-29+02:00"
}
relativerange
¶
Checks that the event is in a certain range relative to the current time.
- Specify
unit
withMINUTE
,HOUR
,DAY
,WEEK
,MONTH
,QUARTER
orYEAR
. The condition will only match events that are completely or partially inside the same time window of that unit as the current time.- For example, in a connection run at 13:37, a
relativerange
condition usingHOUR
would match a 12:45-13:15 event, a 13:30-14:00 event and a 12:00-15:00 event. However, an event starting at 14:00 would not be matched.
- For example, in a connection run at 13:37, a
-
Optionally, use any of the following:
- Specify
pastCount
,futureCount
or both to extend matching to additional time periods. The value must be either"0"
(the default), a positive integer like"1"
or"90"
for the corresponding number of units, or"*"
for any past/future event. -
Depending on the combination of
pastCount
andfutureCount
, you can usecurrent
to define how to treat the current time period (e.g. the current hour):Value Meaning EXCLUDE
The current time period is not part of the matching range. Either pastCount
orfutureCount
must be"0"
.SPLIT
The current time period is split at the current precise time. Only the part adjacent to the past or future will be part of the matching range. INCLUDE
The current time period is part of the matching range. This is the default value. -
Specify
strict
astrue
to limit matching to events that are completely in, or identical to, the matching range.- For example, in a connection run at 13:37, a
relativerange
condition usingHOUR
andstrict
set totrue
would match a 13:00-13:05 event, a 13:00-14:00 event and a 13:55-14:00 event. However, it would match neither a 12:45-13:15 event nor a 12:00-15:00 event.
- For example, in a connection run at 13:37, a
- Specify
{
"type": "relativerange",
"unit": "MINUTE"
}
{
"type": "relativerange",
"unit": "WEEK"
}
{
"type": "relativerange",
"unit": "DAY",
"futureCount": "*"
}
{
"type": "relativerange",
"unit": "DAY",
"pastCount": "3",
"current": "SPLIT"
}
{
"type": "relativerange",
"unit": "MINUTE",
"pastCount": "*",
"strict": true
}
First day of week
The first day of the week is Monday as defined by the ISO-8601 standard.
If that does not match your needs, we would love to hear from you! Please email a description of your use case to support@chronolink.app. We will either help you set it up using a combination of conditions or change ChronoLink so users can configure this.
isallday
¶
Checks whether the event starts and ends on midnight. Such events may cover multiple days.
{
"type": "isallday"
}
duration
¶
Checks the duration of the event. Use minimum, maximum or both. Alternatively, specify the exact value to match.
In each case, the value can either contain hours and minutes separated by a colon (e.g. "0:30"
or "8:00"
) or a number of days followed by d
(e.g. "14d"
).
- Minimum
-
Specify either
isAtLeast
orisGreaterThan
. WhileisAtLeast
includes the given value,isGreaterThan
does not.For example,
"isAtLeast": "0:15"
would match a 15-minute event, but"isGreaterThan": "0:15"
would not. - Maximum
- Specify either
isAtMost
orisLesserThan
. WhileisAtMost
includes the given value,isLesserThan
does not. - Exact match
-
Use
is
to specify the desired duration.For example,
"is": "1:00"
will only match events with a duration of exactly one hour.
{
"type": "duration",
"isLessThan": "2:00"
}
{
"type": "duration",
"isAtLeast": "3d"
}
{
"type": "duration",
"isAtLeast": "0:15",
"isLessThan": "1:00"
}
isrecurring
¶
Checks whether the event is part of an event series.
{
"type": "isrecurring"
}
Meetings¶
response
¶
Checks the response of the calendar owner.
Value | Meaning |
---|---|
ACCEPTED |
Responded with 'Yes'. |
TENTATIVE |
Responded with 'Maybe'. |
DECLINED |
Responded with 'No'. Note: Event is only synchronized if you use include. |
PENDING |
Did not respond yet. Note: Event is only synchronized if you use include. |
{
"type": "response",
"is": "TENTATIVE"
}
{
"type": "response",
"oneOf": [
"ACCEPTED",
"TENTATIVE"
]
}
- Specify either a single response via
is
or a list viaoneOf
. - Specify
"default": true
to have this condition also match an event that is not a meeting. If not specified, the condition would not match such an event.
Remarks
In Google calendars, the meeting organizer can change their own response freely between ACCEPTED
(the default), TENTATIVE
and DECLINED
. Declining their meeting does not cancel it.
In Microsoft calendars, there is no such possibility. Therefore, the response
condition is only useful for meetings to which the calendar owner was invited by others. If the calendar owner is the meeting organizer, the response will always be ACCEPTED
.
Compatibility note
When accessing Microsoft calendars on Exchange Server1 or using iCalendar addresses, response
data is not available.
organizer
¶
Checks who organized the meeting. Will not match any non-meeting events.
- Specify either a single email address via
is
or a list viaoneOf
. - Instead of an email address, you can also specify an internet domain which is compared to the domain part of the organizer's email address.
Remark
Being the organizer does not imply being an attendee.
Compatibility note
When accessing Microsoft calendars on Exchange Server1 or using iCalendar addresses, organizer
data is not available.
{
"type": "organizer",
"is": "zhang.san@example.com"
}
{
"type": "organizer",
"is": "example.com"
}
{
"type": "organizer",
"oneOf": [
"zhang.san@example.com",
"example.org"
]
}
Logical¶
not
¶
Matches only if none of the given conditions match. Specify either a single condition
or a list via anyOf
.
{
"type": "not",
"condition": {
"type": "isrecurring"
}
}
{
"type": "not",
"anyOf": [
{
"type": "text",
"search": "Standup",
"field": "TITLE"
},
{
"type": "eventtype",
"is": "MEETING"
}
]
}
and
¶
Combines the given conditions
into one.
{
"type": "and",
"conditions": [
{
"type": "property",
"key": "clockodo:project.id",
"is": "1234567"
},
{
"type": "property",
"key": "clockodo:text"
}
]
}
or
¶
Matches if at least one of the given conditions
match.
{
"type": "or",
"conditions": [
{
"type": "text",
"search": "Daily Standup",
"field": "TITLE"
},
{
"type": "property",
"key": "google:color.name",
"is": "graphite"
}
]
}