Tutorial - Criando um sistema Kanban automatizado usando Sharepoint list - parte 1
Com as novas formas de trabalho que se tornaram mais presentes, especialmente após a pandemia, estamos vendo uma mudança significativa na maneira como as equipes ágeis operam. Antes, era comum ver times trabalhando em salas reservadas, com seus quadros Kanban nas paredes repletos de post-its. No entanto, agora estamos testemunhando o aumento do uso de ferramentas de colaboração e equipes distribuídas em diferentes locais.
Essas ferramentas surgiram para permitir que o processo ágil ocorra sem a necessidade de as pessoas estarem fisicamente próximas ou interagindo o tempo todo. A ideia é manter todos informados sobre as ações a serem tomadas em tempo real.
Embora existam várias ferramentas de mercado, como Jira e Kanbanize, vou mostrar como criar um Kanban Board automatizado usando SharePoint Lists. Muitas pessoas preferem uma solução simples e que possa ser atendida por um recurso do Office 365, sem a necessidade de uma ferramenta específica.
O Sistema Kanban em SharePoint
O sistema Kanban que proponho é baseado em uma lista do SharePoint com uma visualização de quadro Kanban customizada. Nesse quadro, os cards são coloridos com base nas datas de vencimento de cada tarefa:
Além disso, o sistema envia mensagens para as pessoas atribuídas a cada tarefa sempre que o responsável é alterado ou quando a tarefa é movida de um bucket para outro. Também há um lembrete para tarefas com vencimento em 2 dias.
Aqui está o passo a passo para criar seu próprio Kanban Board automatizado:
2. Defina as Colunas:
3. Crie a Coluna “Bucket”:
4. Crie a Coluna “Due Date”:
5. Transforme a Visualização em Quadro Kanban:
Customizando as Cores com Base na Data de Vencimento
COPIAR CONTEÚDO ABAIXO (A PARTIR DA SEGUINTE LINHA):
{
"hideSelection": false,
"formatter": {
"elmType": "div",
"attributes": {
"class": "sp-card-container sp-card-container-noPadding"
},
"children": [
{
"elmType": "div",
"attributes": {
"class": "ms-bgColor-white sp-css-borderColor-neutralLight sp-card-borderHighlight sp-card-subContainer sp-card-subContainer-borderRadius"
},
"style": {
"background-color": {
"operator": ":",
"operands": [
{
"operator": "<",
"operands": [
{
"operator": "Date()",
"operands": [
{
"operator": "toDateString()",
"operands": [
{
"operator": "Date()",
"operands": [
"[$DueDate]"
]
}
]
}
]
},
{
"operator": "Date()",
"operands": [
{
"operator": "toDateString()",
"operands": [
{
"operator": "Date()",
"operands": [
"@now"
]
}
]
}
]
}
]
},
"#FFB6C1",
{
"operator": ":",
"operands": [
{
"operator": "==",
"operands": [
{
"operator": "Date()",
"operands": [
{
"operator": "toDateString()",
"operands": [
{
"operator": "Date()",
"operands": [
"[$DueDate]"
]
}
]
}
]
},
{
"operator": "Date()",
"operands": [
{
"operator": "toDateString()",
"operands": [
{
"operator": "Date()",
"operands": [
"@now"
]
}
]
}
]
}
]
},
"#FFFACD",
"#F0FFFF"
]
}
]
}
},
"children": [
{
"elmType": "div",
"style": {
"display": "=if(length([$AssignedTo0]) == 0, 'none', '')"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!AssignedTo0.DisplayName]"
},
{
"elmType": "div",
"style": {
"display": "flex"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "sp-card-userEmptyText"
},
"txtContent": "=if(length([$AssignedTo0]) == 0, '–', '')"
},
{
"forEach": "personIterator in [$AssignedTo0]",
"elmType": "a",
"attributes": {
"class": "=if(loopIndex('personIterator') >= 5, 'sp-card-userContainer', 'sp-card-userContainer sp-card-keyboard-focusable')"
},
"style": {
"display": "=if(loopIndex('personIterator') >= 5, 'none', '')"
},
"children": [
{
"elmType": "img",
"defaultHoverField": "[$personIterator]",
"attributes": {
"src": "=getUserImage([$personIterator.email], 'S')",
"title": "[$personIterator.title]",
"class": "sp-card-userThumbnail"
},
"style": {
"display": "=if(length([$AssignedTo0]) > 5 && loopIndex('personIterator') >= 4, 'none', '')"
}
},
{
"elmType": "div",
"attributes": {
"class": "ms-bgColor-neutralLight ms-fontColor-neutralSecondary sp-card-userOthers"
},
"style": {
"display": "=if(length([$AssignedTo0]) > 5 && loopIndex('personIterator') == 4, '', 'none')"
},
"customCardProps": {
"formatter": {
"elmType": "div",
"attributes": {
"class": "sp-card-personCallout"
},
"children": [
{
"forEach": "personIterator in [$AssignedTo0]",
"elmType": "div",
"attributes": {
"class": "sp-card-userContainer sp-card-userCustomCard"
},
"style": {
"display": "=if(loopIndex('personIterator') < 4, 'none', '')"
},
"children": [
{
"elmType": "img",
"defaultHoverField": "[$personIterator]",
"attributes": {
"src": "=getUserImage([$personIterator.email], 'S')",
"title": "[$personIterator.title]",
"class": "sp-card-userThumbnail"
}
}
]
Recommended by LinkedIn
}
]
},
"openOnEvent": "hover"
},
"children": [
{
"elmType": "span",
"txtContent": "='+' + toString(length([$AssignedTo0]) - (4))"
}
]
}
]
},
{
"elmType": "div",
"attributes": {
"class": "sp-card-userTitle sp-card-keyboard-focusable"
},
"style": {
"display": "=if(length([$AssignedTo0]) == 1, '', 'none')"
},
"defaultHoverField": "[$personIterator]",
"txtContent": "[$AssignedTo0.title]"
}
]
}
],
"attributes": {
"class": "sp-card-previewColumnContainer"
}
},
{
"elmType": "div",
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!Title.DisplayName]"
},
{
"elmType": "p",
"attributes": {
"title": "[$Title]",
"class": "ms-fontColor-neutralPrimary sp-card-content sp-card-highlightedContent",
"role": "heading",
"aria-level": "3"
},
"txtContent": "=if ([$Title] == '', '–', [$Title])"
}
],
"attributes": {
"class": "sp-card-displayColumnContainer"
}
},
{
"elmType": "div",
"style": {
"display": "=if ([$Description] == '', 'none', '')"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!Description.DisplayName]"
},
{
"elmType": "p",
"attributes": {
"title": "[$Description]",
"class": "ms-fontColor-neutralPrimary sp-card-content sp-card-multiline"
},
"txtContent": "=if ([$Description] == '', '–', [$Description])",
"style": {
"-webkit-line-clamp": "2",
"height": "40px"
}
}
],
"attributes": {
"class": "sp-card-displayColumnContainer"
}
},
{
"elmType": "div",
"style": {
"display": "=if ([$Category0] == '', 'none', '')"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!Category0.DisplayName]"
},
{
"elmType": "div",
"attributes": {
"class": "sp-card-content sp-card-formatterRef"
},
"children": [
{
"columnFormatterReference": "[$Category0]"
}
]
}
],
"attributes": {
"class": "sp-card-displayColumnContainer"
}
},
{
"elmType": "div",
"style": {
"display": "=if ([$Progress] == '', 'none', '')"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!Progress.DisplayName]"
},
{
"elmType": "div",
"attributes": {
"class": "sp-card-content sp-card-formatterRef"
},
"children": [
{
"columnFormatterReference": "[$Progress]"
}
]
}
],
"attributes": {
"class": "sp-card-displayColumnContainer"
}
},
{
"elmType": "div",
"style": {
"display": "=if ([$DueDate.displayValue] == '','none', '')"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!DueDate.DisplayName]"
},
{
"elmType": "p",
"attributes": {
"title": "=if ([$DueDate.displayValue] == '', '–', [$DueDate.displayValue])",
"class": "ms-fontColor-neutralPrimary sp-card-content "
},
"txtContent": "=if ([$DueDate.displayValue] == '', '–', [$DueDate.displayValue])"
}
],
"attributes": {
"class": "sp-card-displayColumnContainer"
}
},
{
"elmType": "div",
"style": {
"display": "=if ([$Bucket] == '', 'none', '')"
},
"children": [
{
"elmType": "p",
"attributes": {
"class": "ms-fontColor-neutralSecondary sp-card-label sp-card-boldText"
},
"txtContent": "[!Bucket.DisplayName]"
},
{
"elmType": "div",
"attributes": {
"class": "sp-card-content sp-card-formatterRef"
},
"children": [
{
"columnFormatterReference": "[$Bucket]"
}
]
}
],
"attributes": {
"class": "sp-card-displayColumnContainer"
}
}
]
}
]
}
}
(ATÉ A ÚLTIMA CHAVE ACIMA)
Agora, as tarefas no seu quadro Kanban serão coloridas da seguinte forma:
Lembre-se de que você pode explorar outras customizações usando a inteligência artificial para ajustar o código conforme necessário. Compartilhe essa dica com sua equipe e aproveite o poder do SharePoint para otimizar seu fluxo de trabalho! 🚀
Personalizando as Cores das Tarefas
Você já criou um quadro Kanban no SharePoint, e agora as tarefas são visualmente diferenciadas com base nas datas de vencimento. Isso é ótimo para priorizar e gerenciar as atividades de forma eficiente. Agora vamos validar alguns detalhes caso tenha problemas:
Passo 1: Verifique as Colunas
Antes de prosseguir, certifique-se de que as colunas “Bucket” e “Due Date” existam e tenham exatamente esses nomes. O código que vamos usar faz referência a essas colunas. Se você quiser usar outros nomes, lembre-se de ajustar o JSON manualmente.
Passo 2: Teste as Cores
Crie algumas tarefas com diferentes datas de vencimento para validar se as cores estão funcionando corretamente:
Se as cores não estiverem aparecendo corretamente, pode ser devido a configurações específicas do seu ambiente SharePoint. Experimente usar uma lista diferente como modelo ou criar uma nova lista do zero, adicionando as colunas necessárias (Bucket e Due Date).
Próximo passo: Automatizando Avisos e Notificações
Agora que temos um quadro visualmente atraente, vamos adicionar automações para manter todos informados sobre o progresso das tarefas. No próximo tutorial, abordaremos como enviar avisos de vencimento e notificar os responsáveis pelas tarefas.
Fique ligado! E boa sorte em seus projetos! 🚀
IT Strategy and Value Delivery Director at Kellanova Latin America
8moBravo Silas! será útil para muitas pessoas!
Business Transformation | Digital Transformation | Business Intelligence | Route to Market | Tech Sales
8moShow Silas!!