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
fieldwithTITLE,DESCRIPTION,LOCATIONorANY. - Specify the key of a property to check using
property. - If neither
fieldnorpropertyare specified, the condition will check the title, description and location fields.
- Specify
- Optionally, specify
modewithSTART,END,EQUALorCONTAINto set where the given text must appear in the field or property.CONTAINis 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
isor a list viaoneOf.Value Meaning DEFAULTA regular event. MEETINGA 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
isor a list viaoneOf. - Possible values are
FREE,WORKING_ELSEWHERE,TENTATIVE,BUSY,OUT_OF_OFFICEorUNKNOWN.
{
"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
isor a list viaoneOf. - Possible values are
NORMAL,PERSONAL,CONFIDENTIAL,PRIVATE,UNSPECIFIEDorPUBLIC.
{
"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
isor 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
fieldwithDESCRIPTIONorLOCATION.
{
"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
isor a list viaoneOf. - Value matching is case-insensitive unless
matchCaseis specified astrue.
{
"type": "property",
"key": "google:color.name",
"oneOf": [
"flamingo",
"tomato",
"tangerine"
]
}
limit¶
Limits synchronization to the given number of events.
- Use
countto specify the event limit as a number greater than or equal to 1. - Optionally, you can apply that number to a period by specifying
perwith a value ofDAY,WEEK,MONTH,QUARTERorYEAR. 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
onlyOnto ensure the event concerns any of the given days of week, specifyexceptOnto ensure it does not. -
Specify
onlyDuringto ensure the event concerns any of the given time ranges, specifyexceptDuringto 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
17or17: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,endor both:- Specify
startto ensure the event starts on or after the given date. - Specify
endto 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
unitwithMINUTE,HOUR,DAY,WEEK,MONTH,QUARTERorYEAR. 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
relativerangecondition usingHOURwould 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,futureCountor 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
pastCountandfutureCount, you can usecurrentto define how to treat the current time period (e.g. the current hour):Value Meaning EXCLUDEThe current time period is not part of the matching range. Either pastCountorfutureCountmust be"0".SPLITThe 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. INCLUDEThe current time period is part of the matching range. This is the default value. -
Specify
strictastrueto limit matching to events that are completely in, or identical to, the matching range.- For example, in a connection run at 13:37, a
relativerangecondition usingHOURandstrictset totruewould 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
isAtLeastorisGreaterThan. WhileisAtLeastincludes the given value,isGreaterThandoes not.For example,
"isAtLeast": "0:15"would match a 15-minute event, but"isGreaterThan": "0:15"would not. - Maximum
- Specify either
isAtMostorisLesserThan. WhileisAtMostincludes the given value,isLesserThandoes not. - Exact match
-
Use
isto 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
isor a list viaoneOf. - Specify
"default": trueto 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
isor 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"
}
]
}