SharePoint Online JSON Hyperlink Column Formatting - If empty - json

I am trying to make a hyperlink column to appear "NA" if empty but if a hyperlink is inputted to show as a clickable "View MSA".
I am able to achieve the latter as a clickable link but can't seem to get the if empty/blank working using IF statement.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "a",
"attributes": {
"href": "#currentField",
"target": "_blank"
},
"txtContent": "View MSA"
}
Outcome

Someone provided me with a solution;
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "a",
"attributes": {
"href": "#currentField",
"target": "_blank"
},
"txtContent": "=if(#currentField == '', 'NA','View MSA')"
}

Related

Formatting SharePoint columns to display button with JSON

I have a SharePoint library with a status field and a button field. The button field has formatted JSON code to execute a Flow but the button only displays if the Status field is set to a certain value. This works great. However, I would the button to display if the Status field is value 1 OR value 2. How do I do that in the code? Thanks!!
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"txtContent": "Archive Machine",
"customRowAction": {
"action": "executeFlow",
"actionParams": "{\"id\": \"88258048-da4b-101c-8b4a-e91ebd385d5e\"}"
},
"style": {
"background-color": "purple",
"color": "white",
"visibility": {
"operator": "?",
"operands": [
{
"operator": "==",
"operands": [
"[$Status]",
"Status1"
]
},
"visible",
"hidden"
]
}
}
}```
Please follow the steps:
1.Create a Choice column named [Status]
2.Use the below JSON code to Formate [Status] column
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"txtContent": "Archive Machin",
"customRowAction": {
"action": "executeFlow",
"actionParams": "{\"id\":\"88258048-da4b-101c-8b4a-e91ebd385d5e\"}"
},
"style": {
"background-color": "purple",
"color": "white",
"visibility": "=if(([$Status] == '1') || ([$Status] == '2'),'visible','hidden')"
}
}

Conditional formatting on SharePoint list column with Flow buttons

I'm trying to include a button to conditionally launch a flow on an item of a SharePoint List.
I have a list with multiple columns, such as Status, Approval and Created_By. I want the Approval column to show buttons that can launch a Power Automate Flow on the list item. And these buttons should be different in the following situations:
When the field in the Status column equals 'Draft' -> Show button to start Flow 1
When the field in the Status column equals 'Approved' -> Show button to start Flow 2
When the person who views the list is not the creator of the item -> Show no button
The method to include a button to launch a flow, using a formatted column, can be found here. However the example does not include conditional statements, see code below:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "executeFlow",
"actionParams": "{\"id\": \"edf627d9-20f4-45ba-8bc9-4494bf2ff1be\"}"
},
"attributes": {
"class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover"
},
"style": {
"border": "none",
"background-color": "transparent",
"cursor": "pointer"
},
"children": [
{
"elmType": "span",
"attributes": {
"iconName": "Flow"
},
"style": {
"padding-right": "6px"
}
},
{
"elmType": "span",
"txtContent": "Send to Manager"
}
]
}
I found that it is possible to include if statements in the JSON code. The Status can be checked with the following code: "=if([$Status] == 'Approved','','')".
Whether the person who is viewing the list is the same as the person who created the item should be possible to check with something like this (although this specific piece of code does not work..): "=if(#me == [$Created_x0020_By.email],'','')"
I'm not really known with JSON so I don't know how to insert these conditions into the code above. So I'd like to ask your help!
Solved thanks to Michael Han_MSFT! My resulting code is:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "executeFlow",
"actionParams": "=if(#me == [$Author.email], if([$Status]=='Draft', '{\"id\": \"d4ebc660-16fd-4320-a69c-d91d51277666\"}', if([$Status]=='Approved', '{\"id\": \"94233841-9c32-4e90-9018-479e72c33385\"}', 'null')), 'null')"
},
"attributes": {
"class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover"
},
"style": {
"border": "none",
"background-color": "transparent",
"cursor": "pointer"
},
"children": [
{
"elmType": "span",
"attributes": {
"iconName": "=if(#me == [$Author.email],'Flow','')"
},
"style": {
"padding-right": "6px"
}
},
{
"elmType": "span",
"txtContent": "=if(#me == [$Author.email], if([$Status]=='Draft','Start approval', if([$Status]=='Approved','Cancel', '')), '')"
}
]
}
1.The Statu can be checked in the "actionParams" with the following code, different id for different flows:
"actionParams": "=if([$Status]=='Approved','{\"id\": \"a04b0180-7d32-471c-8ff6-49497d229b23\"}','{\"id\": \"1f922b63-a66b-4177-9aa6-f4c37c4d6f27\"}')"
2.You need to use [$Author.email] instead of [$Created_x0020_By.email].
Below example code for your reference:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "executeFlow",
"actionParams": "=if([$Status]=='Approved','{\"id\": \"a04b0180-7d32-471c-8ff6-49497d229b23\"}','{\"id\": \"1f922b63-a66b-4177-9aa6-f4c37c4d6f27\"}')"
},
"attributes": {
"class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover"
},
"style": {
"border": "none",
"background-color": "transparent",
"cursor": "pointer"
},
"children": [
{
"elmType": "span",
"attributes": {
"iconName": "=if(#me == [$Author.email],'Flow','')"
},
"style": {
"padding-right": "6px"
}
},
{
"elmType": "span",
"txtContent": "=if(#me == [$Author.email], if([$Status]=='Approved','Flow1','Flow2'), '')"
}
]
}
Test result:

How to append an ID value of a list element to a link with .json?

I need your help with something and Id be very grateful.
Lets say I'm having a SharePoint list with different list elements. Every list element has a specific ID.
What I am trying to do is for example I'm having a column formatted as a text field. I'm trying to write a .json code that appends the value of the ID of the list element to a link
I did try it with the following code
{ "$schema": "http://columnformatting.sharepointpnp.com/columnFormattingSchema.json", "debugMode": true, "elmType": "div", "children": [ { "elmType": "a", "attributes": { "target": "_blank", "href": { "operator": "+", "operands": [ "http://anywebsite?ID='", "[$ID]" ] } }, "txtContent": "Some text" } ] }
But when I click ok then in the SharePoint column it gives me an error:
Failure: Cannot read property 'valueOf' of null
Now what can I do to append the ID to a Link in a different column ?
I appreciate your help.
I test Hyperlink filed, there is one ' which doesn't need in your json.
{ "$schema": "http://columnformatting.sharepointpnp.com/columnFormattingSchema.json", "debugMode": true, "elmType": "div", "children": [ { "elmType": "a", "attributes": { "target": "_blank", "href": { "operator": "+", "operands": [ "http://anywebsite?ID=", "[$ID]" ] } }, "txtContent": "Some text" } ] }

How to include blank spaces " " in a hyperlink in JSON when formatting a SharePoint List Column

I am attempting to include a link to a specific SharePoint List Item in an email using JSON formatting, but the URL contains spaces, which I can't seem to include in the hyperlink.
I have tried using "%20" as well as "x0020" in place of the space, but this is just read as a space.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "div",
"children": [
{
"elmType": "span",
"style": {
"padding-right": "8px"
},
"txtContent": "#currentField.title"
},
{
"elmType": "a",
"attributes": {
"iconName": "Mail",
"class": "sp-field-quickActions",
"href": {
"operator": "+",
"operands": [
"mailto:",
"#currentField.email",
"?subject=Task status&body=Hi ","#currentField.title",", Please see below link to a Shared Services Team Task which requires your attention.\r\n\r\n---\r\n",
"\r\nClick this link for more info. https://MyCompany.sharepoint.com/sites/SharedServicesDepartment/Lists/Task Management Register/DispForm.aspx?ID=",
"[$ID]"
]
}
}
}
]
}
What I am trying to achieve is a hyperlink of
https://MyCompany.sharepoint.com/sites/SharedServicesDepartment/Lists/Task Management Register/DispForm.aspx?ID=
But it cuts the hyperlink off at the first Space and leaves the last part as just text.
https://MyCompany.sharepoint.com/sites/SharedServicesDepartment/Lists/Task
Management Register/DispForm.aspx?ID=
We can use the JSON formatting below to achieve it.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "div",
"children": [
{
"elmType": "span",
"style": {
"padding-right": "8px"
},
"txtContent": "#currentField.title"
},
{
"elmType": "a",
"attributes": {
"iconName": "Mail",
"class": "sp-field-quickActions",
"href": {
"operator": "+",
"operands": [
"mailto:",
"#currentField.email",
"?subject=Task status&body=Hi ","#currentField.title",", Please see below link to a Shared Services Team Task which requires your attention.\r\n\r\n---\r\n",
"\r\nClick this link for more info. <https://MyCompany.sharepoint.com/sites/SharedServicesDepartment/Lists/Task Management Register/DispForm.aspx?ID=",
"[$ID]",
">"
]
}
}
}
]
}
Reference: Add links containing spaces to an e-mail message

JSON mailto URL contains a whitespace

There is a space in the URL below that is used to create a mailto link in the body of an email, which will not work. I have tried adding %20 to compensate; however, that does not work. Any suggestion on getting this URL corrected so a user can click on the link as advised in the email? Thank you!
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "div",
"children": [
{
"elmType": "span",
"style": {
"padding-right": "8px"
},
"txtContent": "#currentField.title"
},
{
"elmType": "a",
"attributes": {
"iconName": "Mail",
"class": "sp-field-quickActions",
"href": {
"operator": "+",
"operands": [
"mailto:",
"#currentField.email",
"?subject=Task status&body=Hello, how is your task coming along?.\r\n---\r\n",
"#currentField.title",
"\r\nClick this link for more info. https://somesite.sharepoint.com/Information Technology/Lists/Projects/AllItems.aspx?ID=",
"[$ID]"
]
}
}
}
]
}