Справочник по синтаксису форматирования
elmType
Указывает тип создаваемого элемента. Допустимые элементы:
div
span
a
img
svg
path
button
p
filepreview
Любое другое значение приведет к ошибке.
filepreview
Используйте специальный elmType
filepreview
атрибут , src
чтобы @thumbnail.<Size>
просмотреть эскизы файлов в библиотеке документов.
Если эскиз успешно загрузился, маленький значок типа бренда виден слева внизу. Если эскиз не загружается (или тип файла не поддерживает эскизы), вместо него отображается значок типа файла .
"elmType": "filepreview",
"attributes": {
"src": "@thumbnail.medium"
}
Безопасность img src
Допускаются изображения из следующих доменов:
- домен клиента, настроенные домены с несколькими регионами и домены тщеславия (
company.sharepoint.com
) -
cdn.office.net
,akamaihd.net
,static2.sharepointonline.com
CDN
Большинство других внешних источников изображений по умолчанию блокируются в пользовательских модулях форматирования. Чтобы включить внешние образы и разрешить определенные домены или сети CDN, домен необходимо добавить в параметр уровня сайта. Дополнительные сведения см. в статье Разрешение или ограничение возможности внедрения содержимого на страницах SharePoint.
txtContent
Необязательно свойство, которое задает текстовое содержимое элемента, указанного с помощью свойства elmType
. Значение этого свойства может представлять собой строку (в том числе специальную) или объект Expression.
style
Необязательно свойство, которое задает атрибуты стиля, применяемые к элементу, который указан с помощью свойства elmType
. Это объект с парами имя-значение, которые соответствуют именам и значениям CSS. Значение каждого из свойств объекта style может представлять собой строку (в том числе специальную) или объект Expression. Поддерживаются следующие атрибуты style:
'background-color'
'fill'
'background-image'
'border'
'border-bottom'
'border-bottom-color'
'border-bottom-style'
'border-bottom-width'
'border-color'
'border-left'
'border-left-color'
'border-left-style'
'border-left-width'
'border-right'
'border-right-color'
'border-right-style'
'border-right-width'
'border-style'
'border-top'
'border-top-color'
'border-top-style'
'border-top-width'
'border-width'
'outline'
'outline-color'
'outline-style'
'outline-width'
'border-bottom-left-radius'
'border-bottom-right-radius'
'border-radius'
'border-top-left-radius'
'border-top-right-radius'
'box-decoration-break'
'box-shadow'
'box-sizing'
'overflow-x'
'overflow-y'
'overflow-style'
'rotation'
'rotation-point'
'opacity'
'cursor'
'height'
'max-height'
'max-width'
'min-height'
'min-width'
'width'
'flex-grow'
'flex-shrink'
'flex-flow'
'flex-direction'
'flex-wrap'
'flex'
'justify-content'
'align-items'
'box-align'
'box-direction'
'box-flex'
'box-flex-group'
'box-lines'
'box-ordinal-group'
'box-orient'
'box-pack'
'font'
'font-family'
'font-size'
'font-style'
'font-variant'
'font-weight'
'font-size-adjust'
'font-stretch'
'grid-columns'
'grid-rows'
'margin'
'margin-bottom'
'margin-left'
'margin-right'
'margin-top'
'column-count'
'column-fill'
'column-gap'
'column-rule'
'column-rule-color'
'column-rule-style'
'column-rule-width'
'column-span'
'column-width'
'columns'
'padding'
'padding-bottom'
'padding-left'
'padding-right'
'padding-top'
'bottom'
'clear'
'clip'
'display'
'float'
'left'
'overflow'
'position'
'right'
'top'
'visibility'
'z-index'
'border-collapse'
'border-spacing'
'caption-side'
'empty-cells'
'table-layout'
'color'
'direction'
'letter-spacing'
'line-height'
'text-align'
'text-decoration'
'text-indent'
'text-transform'
'unicode-bidi'
'vertical-align'
'white-space'
'word-spacing'
'hanging-punctuation'
'punctuation-trim'
'text-align-last'
'text-justify'
'text-outline'
'text-overflow'
'text-shadow'
'text-wrap'
'word-break'
'word-wrap'
'stroke'
'fill-opacity'
'--inline-editor-border-width'
'--inline-editor-border-style'
'--inline-editor-border-radius'
'--inline-editor-border-color'
'-webkit-line-clamp'
'object-fit'
'transform' // Only translate(arg) and translate(arg, arg) are currently supported
В приведенном ниже примере показано значение объекта style. В этом примере будут применены два свойства style (padding
и background-color
).
padding
— это жестко заданное значение строки. Значение background-color
— это объект Expression, который окрашивается в красный (#ff0000
) или зеленый (#00ff00
) цвет в зависимости от того, меньше ли 40 значение текущего поля (указывается @currentField
). Дополнительные сведения см. в разделе Объект Expression.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"style": {
"padding": "4px",
"background-color": {
"operator": "?",
"operands": [
{
"operator": "<",
"operands": [
"@currentField",
40
]
},
"#ff0000",
"#00ff00"
]
}
}
}
Вышеуказанный пример с использованием синтаксиса выражений в стиле Excel:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"style": {
"padding": "4px",
"background-color": "=if(@currentField < 40, '#ff0000', '#00ff00')"
}
}
attributes
Необязательное attributes
свойство задает дополнительные атрибуты для добавления к элементу, заданному параметром elmType
. Это объект с парами имя-значение. Допустимые имена атрибутов:
- href
- rel
- src
- class
- target
- title
- role
- iconName
- d
- aria
- data-interception
- viewBox
- preserveAspectRatio
- перетаскивание
Любое другое имя атрибута приведет к ошибке. Значения атрибутов могут представлять собой объекты Expression или строки. В следующем примере к элементу, указанному с помощью свойства elmType
, добавляются два атрибута (target
и href
). Атрибут target
жестко задан в строке. Атрибут href
— это выражение, которое вычисляется в среде выполнения по формуле http://finance.yahoo.com/quote/
+ значение текущего поля (@currentField
).
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"target": "_blank",
"href": "='http://finance.yahoo.com/quote/' + @currentField"
}
children
Необязательное children
свойство задает дочерние элементы элемента, указанного параметром elmType
. Это значение задается в качестве массива объектов elm
. Возможен произвольный уровень вложения. Если элемент содержит свойство txtContent
, дочерние свойства игнорируются.
debugMode
Необязательное debugMode
свойство предназначено для отладки. Выводит сообщения об ошибках и записывает предупреждения в журнале консоли.
forEach
Необязательное forEach
свойство позволяет элементу дублировать себя для каждого члена определенного поля с несколькими значениями или массива. Значение "forEach"
свойства должно быть в формате "iteratorName in @currentField"
или "iteratorName in [$FieldName]"
."iteratorName in Expression-Returning-An-Array"
iteratorName
представляет имя переменной итератора, которая используется для представления текущего члена поля с несколькими значениями. Имя итератора может быть любым сочетанием буквенно-цифровых символов и символом подчеркивания (_
), которое не начинается с цифры.
Поле, используемое в цикле, должно находиться в поддерживаемом типе поля с включенными параметрами с несколькими значениями: Person, Lookup и Choice. Можно также использовать выражение, возвращающее массив.
В элементе с forEach
или его дочерними элементами переменная итератора может называться как новое поле. Доступ к индексу итератора можно получить с помощью оператора loopIndex
.
forEach
не может применяться к корневому элементу и не будет отображаться, если в поле нет значения.
Примеры см. в разделе Форматирование полей с несколькими значениями .
customRowAction
Элементы button
можно использовать для запуска определенного действия над родительским элементом. Каждый button
элемент имеет обязательное свойство , customRowAction
указывающее action
, которое принимается при выборе кнопки. Это действие должно принимать одно из следующих значений:
defaultClick: нажатие кнопки с этим действием соответствуют щелчку по элементу списка в стандартном представлении. В следующем примере показана кнопка, которая при выборе имитирует выбор элемента, что приводит к открытию элемента списка. Добавление этой кнопки в библиотеку документов имитирует выбор файла или папки, что приводит к открытию файла или папки.
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "button", "txtContent": "Open this item", "customRowAction": { "action": "defaultClick" } }
общий доступ. При нажатии кнопки откроется диалоговое окно общего доступа. Ниже приведен пример такого типа кнопки:
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "button", "txtContent": "Share this item", "customRowAction": { "action": "share" } }
delete: при нажатии кнопки откроется диалоговое окно подтверждения удаления.
editProps: при нажатии кнопки откроется страница свойств элемента в режиме редактирования.
openContextMenu: при нажатии кнопки откроется контекстное меню элемента по умолчанию.
setValue: выбор элемента обновит элемент указанными значениями полей.
{ "elmType": "div", "txtContent": "[$FieldName]", "customRowAction":{ "action": "setValue", "actionInput": { "FieldInternalName_1": "FieldValue_1", "FieldInternalName_2": "FieldValue_2", } } }
executeFlow: нажатие кнопки приведет к запуску указанного потока, указанного идентификатором внутри атрибута
actionParams
. Пример см. в разделе Создание кнопки для запуска потока. В следующем примере показан этот тип кнопки:{ "$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json", "elmType": "button", "txtContent": "It's Flow Time!", "customRowAction": { "action": "executeFlow", "actionParams": "{\"id\":\"f7ecec0b-15c5-419f-8211-302a5d4e94f1\", \"headerText\":\"It's Flow Time!\",\"runFlowButtonText\":\"Do it\"}" } }
actionParams
Атрибут может иметь следующие варианты при использованииexecuteFlow
действия:- id: идентификатор запускаемого потока (обязательный)
- headerText: задает текст в верхней части панели потока (необязательно)
- runFlowButtonText: задает текст основной кнопки в панели потока (необязательно)
внедрение. При нажатии кнопки откроется выноска с внедренным в нее содержимым. Содержимое будет определяться URL-адресом, указанным в атрибуте
src
вactionInput
. Вы также можете управлятьheight
иwidth
выноски с помощьюactionInput
.Примечание.
- Должен
src
быть только частьюurl
встраиваемого кода, созданного приложением (обычно он находится вsrc
атрибутеiframe
элемента). - Это действие доступно только в более новой версии приложения Microsoft Lists.
Дополнительные сведения о том, как разрешить или ограничить домены, см. в статье Разрешение или ограничение возможности внедрения содержимого в списки SharePoint с помощью пользовательских средств форматирования.
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "button", "customRowAction": { "action": "embed", "actionInput": { "src": "https://www.relecloud.com/embed/ll00hWQMJxQ", "height": "350", "width": "700" } }, "txtContent": "Click here to open recipe video 👩🍳" }
actionInput
Атрибут может иметь следующие варианты при использованииembed
действия:- src: URL-адрес содержимого, которое требуется внедрить. (обязательно)
- height: высота выноски, в которой будет отображаться внедренное содержимое. Значение по умолчанию — 300. (необязательно)
- width: ширина выноски, в которой будет отображаться внедренное содержимое. Значение по умолчанию — 300. (необязательно)
- Должен
customCardProps
Добавьте пользовательскую карточку в элемент, который отображается при наведении указателя мыши или click
событии. Доступны указанные ниже варианты настройки.
-
"formatter"
— объект JSON, определяющий форматирование пользовательских карточек; -
"openOnEvent"
— событие, для которого должна открываться пользовательская карточка;- Допустимые значения:
click
,hover
- Допустимые значения:
-
"directionalHint"
: укажите направление относительно целевого объекта, в котором будет располагаться пользовательская карточка. Это предпочтительное расположение, но не гарантируется в зависимости от места.- Допустимые значения:
bottomAutoEdge
,bottomCenter
,bottomLeftEdge
,bottomRightEdge
,leftBottomEdge
,leftCenter
,leftTopEdge
, ,rightCenter
rightBottomEdge
, ,rightTopEdge
topAutoEdge
, ,topLeftEdge
topCenter
topRightEdge
- Допустимые значения:
-
"isBeakVisible"
— указывает, будет ли отображаться острый конец; -
"beakStyle"
— указывает объект стиля для острого конца пользовательской карточки.
defaultHoverField
Добавляет карточку профиля для полей людей или карточку наведении указателя на файлы в библиотеке документов.
-
"defaultHoverField": "[$Editor]"
добавляет карточку профиля для поля редактора -
"defaultHoverField": "[$FileLeafRef]"
добавляет карточку файла, отображаемую при наведении курсора мыши в библиотеке документов.
columnFormatterReference
Этот элемент будет заменен объектом JSON средства форматирования, на который указывают ссылки. Многоуровневая ссылка не поддерживается.
{
"columnFormatterReference": "[$FieldName]"
}
inlineEditField
Добавляет редактор полей для столбца, на который указывает ссылка.
{
"elmType": "div",
"inlineEditField": "[$FieldName]",
"txtContent": "[$FieldName]"
}
filePreviewProps
Является filePreviewProps
необязательным свойством, которое позволяет переопределять стили по умолчанию значка типа файла и значка типа торговой марки в filepreview
elmType.
И fileTypeIconClass
brandTypeIconClass
можно использовать для предоставления имен классов CSS значку типа файла и элементам значка типа торговой марки соответственно.
И fileTypeIconStyle
brandTypeIconStyle
можно использовать для предоставления стилей значку типа файла и значку типа торговой марки соответственно. Эти стили будут иметь приоритет над теми же стилями, которые приходят из классов CSS, предоставляемых двумя приведенными выше свойствами.
"elmType": "filepreview",
"attributes": {
"src": "@thumbnail.medium",
},
"filePreviewProps": {
"fileTypeIconClass": "sp-css-borderColor-neutralLight",
"fileTypeIconStyle": {
"width": "100px"
},
"brandTypeIconClass": "sp-css-borderColor-neutralLight",
"brandTypeIconStyle": {
"width": "68px"
}
}
Выражения
Значения свойств txtContent
, свойств стиля и атрибутов можно выразить в виде выражений, чтобы они вычислялись во время выполнения на основе контекста текущего поля (или строки). В объекты Expression можно вложить другие объекты Expression.
Выражения можно писать с помощью выражений в стиле Excel в SharePoint Online и SharePoint Server Subscription Edition, начиная с обновления компонентов 22H2 или с помощью выражений абстрактного дерева синтаксиса в SharePoint Online, SharePoint Server Subscription Edition и SharePoint Server 2019.
Все поля в ViewFields
можно ссылаться в выражениях, даже если они помечены как Explicit
.
Выражения в стиле Excel
Все выражения в стиле Excel начинаются со знака равенства (=
). Этот стиль выражения доступен только в SharePoint Online и SharePoint Server Subscription Edition, начиная с обновления компонентов 22H2. Этот стиль выражения недоступен в SharePoint Server 2019 или SharePoint Server Subscription Edition до обновления компонентов 22H2.
Это простое условное выражение имеет значение none
, если @me
не равно [$Author.email]
, а в противном случае — значение ''
:
=if(@me != [$Author.email], 'none', '')
Более сложные операторы if/else могут быть написаны следующим образом:
=if([$Sentiment] <= 0.3, 'sp-field-severity--blocked', if([$Sentiment] < 0.9,'sp-field-severity--warning','sp-field-severity--good'))
Не условные операторы, которые принимают один или два операнда, могут быть записаны следующим образом:
=[$foo] * -7
=sin(@currentField)
=toString(60 + (sin(6.2831853 * @currentField) * 60))
Выражения деревьев абстрактного синтаксиса
В следующем примере содержится объект Expression, который выполняет выражение:
(@currentField > 40) ? '100%' : (((@currentField * 2.5).toString() + '%')
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"operator": "?",
"operands": [
{
"operator": ">",
"operands": [
"@currentField",
"40"
]
},
"100%",
{
"operator": "+",
"operands": [
{
"operator": "toString()",
"operands": [
{
"operator": "*",
"operands": [
"@currentField",
2.5
]
}
]
},
"%"
]
}
]
}
Операторы
Операторы задают тип выполняемой операции. Допустимые значения операторов:
+
-
/
*
<
>
%
==
!=
<=
>=
||
&&
toString()
Number()
Date()
cos
sin
?
:
toLocaleString()
toLocaleDateString()
toLocaleTimeString()
indexOf
toLowerCase
join
length
abs
loopIndex
floor
ceiling
pow
substring
getDate
getMonth
getYear
toUpperCase
lastIndexOf
startsWith
endsWith
replace
replaceAll
padStart
padEnd
getThumbnailImage
getUserImage
addDays
addMinutes
appendTo
removeFrom
split
Двоичные арифметические операторы . Стандартные арифметические двоичные операторы, которые ожидают два операнда:
+
-
/
*
<
>
%
==
!=
<=
>=
Унарные операторы . Стандартные унарные операторы, которые ожидают только один операнд:
-
toString()
: возвращает строку, представляющую объект .-
"txtContent": "=toString(45)"
дает "45".
-
-
Number()
: возвращает числовое значение. Если операнд не является числом, возвращается NaN.-
"txtContent": "=Number('365')"
дает 365. -
"txtContent": "=Number('Wowee')"
дает не число. -
"txtContent": "=Number(Date('12/26/1981'))"
дает 378190800000.
-
-
Date()
: возвращает объект datetime из параметра (преобразует строки или числа в даты с учетом языкового стандарта).-
"txtContent": "=Date('12/26/1981')"
дает 26.12.1981, 00:00:00.
-
-
cos
: возвращает косизон заданного угла, который должен быть указан в радианах.-
"txtContent": "=cos(5)"
дает 0.28366218546322625.
-
-
sin
: возвращает синус числа.-
"txtContent": "=sin(90)"
дает 0.8939966636005579.
-
-
toDateString()
: возвращает дату в коротком понятном формате.- Результат
"txtContent": "=toDateString(@now)"
не зависит от языкового стандарта пользователя и будет выглядеть так: "Wed Aug 03 2022"
- Результат
-
toLocaleString()
: возвращает представление даты с учетом языка.- Результаты
"txtContent":"=toLocaleString(@now)"
могут различаться в зависимости от языкового стандарта пользователя, но ru-ru выглядит как "5.02.2019, 13:22:24".
- Результаты
-
toLocaleDateString()
: возвращает чувствительное к языку представление только части даты даты.- Результаты
"txtContent":"=toLocaleDateString(@now)"
могут различаться в зависимости от языкового стандарта пользователя, но ru-ru выглядит как "5.02.2019".
- Результаты
-
toLocaleTimeString()
: возвращает чувствительное к языку представление только временной части даты.- Результаты
"txtContent":"=toLocaleTimeString(@now)"
могут различаться в зависимости от языкового стандарта пользователя, но ru-ru выглядит как "13:22:24".
- Результаты
-
toLowerCase
: возвращает значение, преобразованное в строчные буквы (работает только со строками) — доступно только в SharePoint Online.-
"txtContent":"=toLowerCase('DogFood')"
дает "dogfood".
-
-
abs
: возвращает абсолютное значение для заданного числа — доступно только в SharePoint Online.-
"txtContent":"=abs(-45)"
дает 45.
-
-
length
: возвращает количество элементов в массиве (поле выбора с несколькими выборами), для всех остальных типов значений возвращает значение 1 при значении true и 0 при значении false. Это НЕ обеспечивает длину строкового значения (см. Обходной путьindexOf
, объясненный позже для такой операции). - Доступно только в SharePoint Online-
"txtContent":"=length(@currentField)"
Может привести к 2 , если есть два выбранных значения -
"txtContent":"=length('Some Text')"
дает 1. -
"txtContent":"=length('')"
дает 0. -
"txtContent":"=length(45)"
дает 1. -
"txtContent":"=length(0)"
дает 0.
-
-
floor
: возвращает наибольшее целое число, меньшее или равное заданному числу. - Доступно только в SharePoint Online-
"txtContent":"=floor(45.5)"
дает 45.
-
-
ceiling
: округляет заданное число до следующего наибольшего целого числа или целого числа. - Доступно только в SharePoint Online-
"txtContent":"=ceiling(45.5)"
дает 46.
-
-
getDate
: возвращает день месяца заданной даты. - Доступно только в SharePoint Online-
"txtContent":"=getDate(Date('12/26/1981'))"
дает 26.
-
-
getMonth
: возвращает месяц в указанной дате в соответствии с местным временем в качестве отсчитываемого от нуля значения (где нуль обозначает первый месяц года). - Доступно только в SharePoint Online-
"txtContent":"=getMonth(Date('12/26/1981'))"
дает 11.
-
-
getYear
: возвращает год заданной даты. - Доступно только в SharePoint Online-
"txtContent":"=getYear(Date('12/26/1981'))"
дает 1981.
-
-
toUpperCase
: возвращает значение, преобразованное в верхний регистр (работает только со строками) — доступно только в SharePoint Online.-
"txtContent":"=toUpperCase('DogFood')"
дает "DOGFOOD".
-
Бинарные операторы. Операторы, предусматривающие два операнда:
-
indexOf
: принимает два операнда. Первый — текст (или массив), в котором выполняется поиск, второй — текст, который вы хотите найти. Возвращает значение индекса для первого вхождения условия поиска в строке (или в массиве). Индексы начинаются с 0. Если условие поиска не найдено в тексте (или массиве), возвращается значение -1. Этот оператор учитывает регистр. - Доступно только в SharePoint Online-
"txtContent": "=indexOf('DogFood', 'Dog')"
дает 0. -
"txtContent": "=indexOf('DogFood', 'F')"
дает 3. -
"txtContent": "=indexOf('DogFood', 'Cat')"
дает -1. -
"txtContent": "=indexOf('DogFood', 'f')"
дает -1.
-
-
join
: принимает два операнда. Первый — это массив (поле множественного выбора, в том числе пользователей), а второй — это строка разделения. Возвращает объединение строк значений массива, эти значения разделены строкой разделения. - Доступно только в SharePoint Online-
"txtContent": "=join(@currentField, ', ')"
может дать "Apple, Orange, Cherry" (в зависимости от выбранных значений). -
"txtContent": "=join(@currentField.title, '|')"
Может привести к "Меган Боуэн|Алекс Уилбер" (в зависимости от выбранных лиц)
-
-
pow
: возвращает базу в степень экспоненты. - Доступно только в SharePoint Online-
"txtContent":"=pow(2,3)"
дает 8.
-
-
lastIndexOf
: возвращает позицию последнего вхождения указанного значения в строке (или массиве).-
"txtContent": "=lastIndexOf('DogFood DogFood', 'Dog')"
дает 8. -
"txtContent": "=lastIndexOf('DogFood DogFood', 'F')"
дает 11. -
"txtContent": "=lastIndexOf('DogFood DogFood', 'Cat')"
дает -1. -
"txtContent": "=lastIndexOf('DogFood DogFood', 'f')"
дает -1.
-
-
startsWith
: определяет, начинается ли строка с символов указанной строки.-
"txtContent":"=startsWith('DogFood', 'Dog')"
дает true. -
"txtContent":"=startsWith('DogFood', 'Food')"
дает false.
-
-
endsWith
: определяет, заканчивается ли строка символами указанной строки.-
"txtContent":"=endsWith('DogFood', 'Dog')"
дает false. -
"txtContent":"=endsWith('DogFood', 'Food')"
дает true.
-
-
getUserImage
: возвращает URL-адрес, указывающий на изображение профиля пользователя для заданного сообщения электронной почты и предпочтительного размера.-
"src":"=getUserImage('kaylat@contoso.com', 'small')"
возвращает URL-адрес, указывающий на изображение профиля пользователя в низком разрешении -
"src":"=getUserImage('kaylat@contoso.com', 's')"
возвращает URL-адрес, указывающий на изображение профиля пользователя в низком разрешении -
"src":"=getUserImage('kaylat@contoso.com', 'medium')"
возвращает URL-адрес, указывающий на изображение профиля пользователя в среднем разрешении -
"src":"=getUserImage('kaylat@contoso.com', 'm')"
возвращает URL-адрес, указывающий на изображение профиля пользователя в среднем разрешении -
"src":"=getUserImage('kaylat@contoso.com', 'large')"
возвращает URL-адрес, указывающий на изображение профиля пользователя в высоком разрешении -
"src":"=getUserImage('kaylat@contoso.com', 'l')"
возвращает URL-адрес, указывающий на изображение профиля пользователя в высоком разрешении
-
-
appendTo
: возвращает массив с указанной записью, добавленной к заданному массиву.-
"txtContent": "=appendTo(@currentField, 'Choice 4')"
возвращает массив с добавленным в @currentField массив "Выбор 4" -
"txtContent": "=appendTo(@currentField, 'kaylat@contoso.com')"
возвращает массив с добавленным в @currentField массив "kaylat@contoso.com"
-
-
removeFrom
: возвращает массив с заданной записью, удаленной из заданного массива, если он имеется.-
"txtContent": "=removeFrom(@currentField, 'Choice 4')"
возвращает массив с удаленным из массива элементом @currentField "Выбор 4" -
"txtContent": "=removeFrom(@currentField, 'kaylat@contoso.com')"
возвращает массив с удаленным из массива значением @currentField "kaylat@contoso.com"
-
-
split
: разделяет заданную строку на упорядоченный список подстрок путем поиска заданного шаблона и возвращает массив этих подстрок.-
"txtContent": "=split('Hello World', ' ')"
возвращает массив с двумя строками : "Hello" и "World"
-
-
addDays
: возвращает объект datetime с добавленными (или вычитаными) днями из заданного значения datetime.-
"txtContent": "=addDays(Date('11/14/2021'), 3)"
возвращает 17.11.2021, 12:00:00 -
"txtContent": "=addDays(Date('11/14/2021'), -1)"
возвращает 13.11.2021, 12:00:00
-
-
addMinutes
: возвращает объект datetime с добавленными (или вычитаными) минутами из заданного значения datetime.-
"txtContent": "=addMinutes(Date('11/14/2021'), 3)"
возвращает 14.11.2021, 12:03:00 -
"txtContent": "=addMinutes(Date('11/14/2021'), -1)"
возвращает 13.11.2021, 11:59:00
-
Тернарные операторы. Операторы, предусматривающие три операнда:
substring
: возвращает часть строки между начальным и конечным индексами. - Доступно только в SharePoint Online-
"txtContent":"=substring('DogFood', 3, 4)"
дает F -
"txtContent":"=substring('DogFood', 4, 3)"
дает F -
"txtContent":"=substring('DogFood', 3, 6)"
дает Foo -
"txtContent":"=substring('DogFood', 6, 3)"
дает Foo
Метод substring() возвращает часть строки между начальным и конечным индексами или до конца строки.
-
replace
: выполняет поиск указанного значения в строке (или массиве) и возвращает новую строку (или массив), в которой заменяется указанное значение. Для строк будет заменен только первый экземпляр значения.-
"txtContent":"=replace('Hello world', 'world', 'everyone')"
дает Hello everyone. -
"txtContent":"=replace([$MultiChoiceField], 'Choice 1', 'Choice 2')"
возвращает массив, заменяющий выбор 1 на выбор 2 -
"txtContent":"=replace([$MultiUserField], @me, 'kaylat@contoso.com')"
возвращает массив, заменяющий на @me 'kaylat@contoso.com'
-
replaceAll
: выполняет поиск указанного значения в строке и возвращает новую строку (или массив), в которой заменяется указанное значение. Для строк все экземпляры значения будут заменены.-
"txtContent":"=replaceAll('H-e-l-l-o W-o-r-l-d', '-', '')"
Результаты в Hello World
-
padStart
: заполняет текущую строку другой строкой, пока результирующая строка не достигнет заданной длины. Заполнение применяется с начала текущей строки.-
"txtContent":"=padStart('DogFood', 10, 'A')"
дает AAADogFood. -
"txtContent":"=padStart('DogFood', 10, 'AB')"
дает ABADogFood. -
"txtContent":"=padStart('DogFood', 5, 'A')"
дает DogFood.
-
padEnd
: заполняет текущую строку заданной строкой, пока результирующая строка не достигнет заданной длины. Заполнение применяется с конца текущей строки.-
"txtContent":"=padEnd('DogFood', 10, 'A')"
дает DogFoodAAA. -
"txtContent":"=padEnd('DogFood', 10, 'AB')"
дает DogFoodABA. -
"txtContent":"=padEnd('DogFood', 5, 'A')"
дает DogFood.
-
getThumbnailImage
: возвращает URL-адрес, указывающий на изображение для заданного поля изображения и предпочтительного размера.-
"src":"=getThumbnailImage([$ImageField], 400, 200)"
дает URL-адрес, указывающий на изображение для заданного поля изображений с шириной 400 и высотой 200
-
Условный оператор. Вот он:
-
?
. В условных операциях, написанных с использованием дерева абстрактного синтаксиса, применяется?
в качестве оператора. Это необходимо для достижения выражения, эквивалентногоa ? b : c
, где, если выражениеa
принимает значение true, то результатом являетсяb
, в противном случае результатом являетсяc
. Для выражений в стиле Excel в этом случае следует использовать операторif
. Несмотря на это, существует три операнда. Первый из них — условие для оценки. Второй — результат, если условие возвращает значение true. Третий — результат, если условие возвращает значение false.-
"txtContent":"=if(4 < 5, 'yes', 'no')"
дает "yes". -
"txtContent":"=if(4 > 5, 'yes', 'no')"
дает "no".
-
Операторы, связанные с многозначными полями. Указанные ниже операторы используются только в контексте с многозначным полем типа "Пользователь", "Подстановка" или "Выбор".
length
join
loopIndex
Оператор length
(если указан с именем поля) возвращает число элементов многозначного поля. При указании поля с одним значением возвращает значение 1 при length
наличии значения в этом поле.
join
объединяет значения в многозначном поле с указанным разделителем. Первый операнд должен указывать на значение в поле с несколькими значениями, например "@currentField.lookupValue"
, "[$AssignedTo.title]"
. Второй операнд должен быть строковым литералом, являющимся разделителем, который объединяет значения вместе.
Оператор loopIndex
(если указан с именем переменной-итератора) возвращает текущий индекс (начиная с 0) итератора. Имя итератора должно быть указано в виде строкового литерала.
loopIndex
поддерживается только элементом с включенным соответствующим свойством forEach
или его дочерними элементами.
Примеры см. в разделе Форматирование полей с несколькими значениями.
Операторы, связанные со строками . Некоторые из ранее подробных операторов можно использовать при работе со строковыми значениями:
+
-
indexOf
(для обходного решения для длины строки)
+
можно использовать, когда необходимо сцепить строки, например:
"txtContent": "=[$column1] + ' ' + [$column2] + 'some other text'"
indexOf
Так как оператор length
не работает для строковых типов значений (он возвращает значение 1 или 0), indexOf
может служить хорошим обходным решением для получения длины строки, например: indexOf([$column1] + '^', '^')
. Мы будем использовать '^'
или любой другой символ, чтобы узнать конец строки.
Операнды
Задает параметры, или операнды, для выражения. Это массив объектов Expression или базовые значения.
Значения специальных строк
Значения свойств txtContent
, style и attribute могут представлять собой строки или объекты Expression. Поддерживаются несколько шаблонов специальных строк для извлечения значений из полей в списке и контексте пользователя.
"@currentField"
Возвращает значение текущего поля.
Поля некоторых типов представлены в виде объектов. Чтобы вывести значение из объекта, сошлитесь на определенное свойство в этом объекте. Например, если текущее поле представляет собой поле пользователя или группы, укажите @currentField.title
, чтобы получить имя пользователя, которое обычно отображается в представлениях списка. Ниже приведены типы полей, которые представлены в виде объектов со списком их свойств.
Примечание.
@currentField.title
возвращает имя пользователя по умолчанию. Но если параметр "Show Field" (Показать поле) для поля пользователя был настроен, он может изменить значение свойства title
. Например, если параметр "Show Field" (Показать поле) поля пользователя настроен как "Department" (Отдел), это поле будет содержать сведения об отделе пользователя для свойства title
.
Поля пользователей
Объект поля пользователя имеет указанные ниже свойства (приведены примеры значений).
{
"id": "122",
"title": "Kalya Tucker",
"email": "kaylat@contoso.com",
"sip": "kaylat@contoso.com",
"picture": "https://contoso.sharepoint.com/kaylat_contoso_com_MThumb.jpg?t=63576928822",
"department":"Human Resources",
"jobTitle":"HR Manager"
}
В поле "Пользователи" могут быть карточки профиля, отображаемые при наведении, вместе с форматированием:
{
"elmType": "div",
"txtContent": "[$Editor.title]",
"defaultHoverField": "[$Editor]"
}
Поля даты и времени
Значения полей даты и времени можно получить разными способами в зависимости от необходимого формата даты. Поддерживаются следующие способы преобразования значений дат в определенные форматы:
-
toLocaleString()
— отображает дату и время; -
toLocaleDateString()
— отображает только дату; -
toLocaleTimeString()
— отображает только время.
Например, при использовании следующей нотации JSON текущее поле (если это поле даты) будет отображено в виде строки с датой и временем:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"txtContent": {
"operator": "toLocaleString()",
"operands" : ["@currentField"]
}
}
Вышеуказанный пример с использованием синтаксиса выражений в стиле Excel:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"txtContent": "=toLocaleString(@currentField)"
}
Поля расположения
Объект поля расположения имеет указанные ниже свойства (приведены примеры значений).
{
"Address": {
"City": "Knoxville",
"CountryOrRegion": "United States",
"State": "TN",
"Street": "963 Worlds Fair Park Dr"
},
"Coordinates": {
"Latitude": "35.961673736572266",
"Longitude": "-83.92420959472656"
},
"DisplayName": "World's Fair Park",
"LocationUri": "https://www.bingapis.com/api/v6/localentities/8346bf26-6da4-104c-6ba5-2334b83f6ac8?setLang=en"
}
Ниже показано, как можно применить поле расположения к текущему полю.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "div",
"style": {
"display": "block"
},
"children": [
{
"elmType": "a",
"txtContent": "@currentField.DisplayName",
"attributes": {
"href": "='https://www.bing.com/maps?cp=' + @currentField.Coordinates.Latitude + '~' + @currentField.Coordinates.Longitude + '&lvl=17&sV=2'",
"target": "_blank",
"title": "=@currentField.Coordinates.Latitude + ', ' + @currentField.Coordinates.Longitude"
},
"style": {
"display": "block"
}
},
{
"elmType": "div",
"txtContent": "@currentField.Address.Street"
},
{
"elmType": "div",
"txtContent": "=@currentField.Address.City + ', ' + @currentField.Address.State"
},
{
"elmType": "div",
"txtContent": "@currentField.Address.CountryOrRegion"
}
]
}
Поля подстановки
Объект поля подстановки имеет указанные ниже свойства (приведены примеры значений).
{
"lookupId": "100",
"lookupValue": "North America",
}
Ниже показано, как можно применить поле подстановки к текущему полю.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "a",
"txtContent": "@currentField.lookupValue",
"attributes": {
"href": {
"operator": "+",
"operands": [
"https://contoso.sharepoint.com/teams/Discovery/Lists/Regions/DispForm.aspx?ID=",
"@currentField.lookupId"
]
},
"target": "_blank"
}
}
Поля гиперссылок
Объект поля гиперссылки имеет указанное ниже свойство (приведен пример значения).
{
"desc": "SharePoint Patterns and Practices",
}
Для ссылки на значение URL-адреса используйте @currentField
.
Ниже показано, как можно применить поле гиперссылки к текущему полю.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "a",
"txtContent": "@currentField.desc",
"attributes": {
"href": "@currentField",
"target": "_blank"
}
}
Поля изображения
Объект поля изображения имеет следующее fileName
свойство:
{
"fileName": "image.png",
}
Примечание.
По состоянию на июль 2024 года только fileName
свойство имеет значение.
Ниже показано, как можно применить поле изображения к текущему полю.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "img",
"attributes": {
"src": "=getThumbnailImage(@currentField, 400, 300)",
"alt": "@currentField.fileName"
},
"style": {
"width": "100%",
"max-width": "100%"
}
}
Поля статуса утверждения
Объект поля статуса утверждения имеет указанное ниже свойство (приведен пример значения).
{
"displayValue": "Approved",
"numeric": 0
}
displayValue
— локализованная строка статуса утверждения.
@currentField
или [$__ModerationStatus]
также будут внутренне сопоставлены со следующим внутренним числовым значением:
- 0: утверждено
- 1: Отказано
- 2: ожидание
- 3. Черновик
- 4. По расписанию
[$_ModerationStatus]
field поддерживает сравнение строк и числовых значений. Числовые сравнения работают в разных языковых стандартах и местах, и это рекомендуемый способ для этого поля.
Следующие выражения оценивают выход справа, когда состояние равно Pending
:
// reading field value
"[$_ModerationStatus]" => "Pending"
// obtaining the internal numeric value:
"=Number([$_ModerationStatus])" => 2
"=[$_ModerationStatus.numeric]" => 2
// addition results in string concatenation:
"='status:'+[$_ModerationStatus]" => 'status:Pending'
// numeric comparisons
"=([$_ModerationStatus] == 2)" => true
"=([$_ModerationStatus] != 1)" => true
// other comparators are rarely useful, for cases where you want might want to exclude Draft & Scheduled
"=([$_ModerationStatus] < 3)" => true
// localized string comparison, works only with one locale (en-us here)
"=if([$_ModerationStatus]=='Pending','This Works too!', 'Nope!')" => 'This Works too!'
В следующем примере показано, как можно использовать поле состояния утверждения для текущего поля:
{
"elmType": "div",
"txtContent": "@currentField.displayValue",
"style": {
"color": "=if(@currentField == 2, 'red', '')"
}
}
"[$FieldName]"
Столбец форматируется в контексте всей строки. Вы можете использовать этот контекст для ссылки на значения других полей в пределах одной строки, указав внутреннее имя поля, заключенного в квадратные скобки, со знаком доллара перед ним: [$InternalName]
. Например, чтобы получить значение поля с внутренним именем "MarchSales", используйте [$MarchSales]
.
Примечание.
Ссылка на другие поля будет работать только в том случае, если они включены в то же представление.
Если значение поля представляет собой объект, можно получить доступ к свойствам этого объекта. Например, чтобы получить доступ к свойству "Title" (Название) поля пользователя "SalesLead" (Потенциальный клиент), укажите "[$SalesLead.title]".
"[!FieldName]"
В форматировании столбцов и представлений можно ссылаться на метаданные любого поля, указав внутреннее имя поля, заключенное в квадратные скобки и перед которым стоит восклицательный знак: [!InternalName]
.
В настоящее время отображаемое имя поля имеется в этих метаданных и доступно с помощью свойства DisplayName: [!SalesLead.DisplayName]
.
"@currentWeb"
Вычисляет абсолютный URL-адрес для сайта. Это аналогично значению webAbsoluteUrl
в контексте страницы. Это значение доступно только в SharePoint Online.
"@me"
Вычисляет электронный адрес текущего пользователя, выполнившего вход.
Это поле может использоваться для отображения электронного адреса текущего пользователя, но, скорее всего, оно будет указано в условиях. Ниже приведен пример задания цвета для поля пользователя красного цвета, если оно равно текущему вошедшего в систему пользователю, а в противном случае — синему:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"txtContent": "@currentField.title",
"style": {
"color": {
"operator": "?",
"operands": [
{
"operator": "==",
"operands": [
"@me",
"@currentField.email"
]
},
"red",
"blue"
]
}
}
}
Вышеуказанный пример с использованием синтаксиса выражений в стиле Excel:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"txtContent": "@currentField.title",
"style": {
"color": "=if(@me == @currentField.email, 'red', 'blue')"
}
}
"@now"
Возвращает текущие дату и время.
"@rowIndex"
Возвращает отображаемый индекс строки в представлении. Это значение зависит от положения отображения и остается согласованным с учетом положения даже при сортировке и фильтрации представлений. Индексы начинаются с 0. Это значение доступно только в SharePoint Online.
Ниже приведен пример использования значения в формате представления для применения переменных стилей.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/view-formatting.schema.json",
"additionalRowClass": "=if(@rowIndex % 2 == 0,'ms-bgColor-themeLighter ms-bgColor-themeLight--hover','')"
}
"@window.innerHeight"
Возвращает число, соответствующее высоте окна браузера (в пикселях) при отображении списка.
"@window.innerWidth"
Возвращает число, соответствующее ширине окна браузера (в пикселях) при отображении списка.
Эскизы
В библиотеке документов есть ряд маркеров, которые можно использовать для получения URL-адреса эскиза файла, в том числе:
-
@thumbnail.small
,@thumbnail.medium
и@thumbnail.large
вычисляются по URL-адресу эскиза в трех различных предопределенных размерах. -
@thumbnail.<bounding size>
вычисляет URL-адрес для самых больших эскизов, размер которого не превышает ограничивающий размер как по ширине, так и по высоте. Например,@thumbnail.150
возвращает URL-адрес эскиза с размером не более 150х150 пикселей. -
@thumbnail.<bounding width>x<bounding height>
вычисляет URL-адрес для самого большого эскиза, который не больше ограничивающей ширины и ограничивающей высоты. Например,@thumbnail.100x200
возвращает URL-адрес эскиза с шириной не более 100 пикселей и высотой не более 200 пикселей.
Эти маркеры не возвращают значений для элементов, отличных от файлов, в том числе для папок.
Примечание.
Пропорции созданного эскиза совпадают с внешним видом файла, изменение ограничивающих размеров не влияет на пропорции эскиза.
Совет
Эскизы доступны только для списка поддерживаемых форматов файлов. Это означает, что иногда созданный URL-адрес недоступен из-за отсутствия поддержки некоторых форматов. Однако если допустимый маркер эскиза задан в качестве единственногоsrc
атрибута тега img
, мы позаботимся о нем и скроем изображение, если оно недоступно.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "img",
"attributes": {
"src": "@thumbnail.200x150",
"alt": "='Thumbnail of file ' + [$FileLeafRef]"
},
"style": {
"width": "100%",
"max-width": "100%"
}
}
Карта для наведения файла по умолчанию с использованием FileLeafRef
{
"elmType": "img",
"style": {
"width": "100%",
"height": "100%",
"display": "=if([$File_x0020_Type] == '', 'none', '')"
},
"attributes": {
"src": "@thumbnail.300x300"
},
"defaultHoverField": "[$FileLeafRef]"
}
displayValue
Следующие типы столбцов могут использовать displayValue
свойство для получения значения, отображаемого по умолчанию, на основе параметра столбца:
- Дата и время
- Числовой
- Да или Нет
- Валюта
- Статус утверждения
{
"elmType": "div",
"txtContent": "@currentField.displayValue"
}
Это также работает с именем поля:
{
"elmType": "div",
"txtContent": "[$FieldName.displayValue]"
}
"@isSelected"
Это значение будет оцениваться true
для выбранных элементов в представлении и false
в противном случае.
"@lcid"
Это будет оцениваться по LCID текущего языка и региональных параметров. Его можно использовать для форматирования даты, времени и чисел.
"@UIlcid"
Это будет оцениваться по LCID текущего языка и региональных параметров пользовательского интерфейса. Его можно использовать для отображения локализованных строк отображения.