MyNote365

Office365 , OneNote , SharePoint , PowerApps , MicrosoftFlow 関連の備忘録

【SharePoint / MicrosoftLists】リストに月間ガントチャートを表示する

f:id:tecchan365:20210514204401p:plain

上図のような月間ガントチャートを表示する書式設定を作成してみました。
以下、作成方法を記載します。

フィールド定義

リストを作成し、次のフィールドを定義します。

列の内部名 列の種類
Start 日付
End 日付
GanttChart(※何でもOK) 1行テキスト(※何でもOK)

f:id:tecchan365:20210514200106p:plain

列の書式設定(ガントチャートの表示)

ガントチャートを表示するために、列の書式設定をします。
列ヘッダーの [GanttChart] をクリック > [列の設定] > [この列の書式設定] をクリックします。

f:id:tecchan365:20210514200339p:plain

画面右側に書式設定の画面が表示されるので、[詳細モード] をクリックし、次の JSON をテキストボックスにコピー & ペーストします。

f:id:tecchan365:20210411131415p:plain

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "style": {
    "display": "flex",
    "flex-direction": "column",
    "margin": "5px"
  },
  "children": [
    {
      "elmType": "div",
      "style": {
        "display": "flex",
        "flex-direction": "row",
        "width": "100%",
        "margin-bottom": "3px"
      },
      "attributes": {
        "class": "ms-fontColor-themePrimary ms-fontWeight-bold"
      },
      "children": [
        {
          "elmType": "span",
          "style": {
            "width": "=(10 / 31) * 100 + '%'",
            "text-align": "left"
          },
          "txtContent": "1"
        },
        {
          "elmType": "span",
          "style": {
            "width": "=(10 / 31) * 100 + '%'",
            "text-align": "left"
          },
          "txtContent": "11"
        },
        {
          "elmType": "span",
          "style": {
            "width": "=(10 / 31) * 100 + '%'",
            "text-align": "left"
          },
          "txtContent": "21"
        }
      ]
    },
    {
      "elmType": "div",
      "style": {
        "display": "flex",
        "width": "100%",
        "border": "2px solid",
        "height": "20px"
      },
      "attributes": {
        "class": "ms-fontColor-themePrimary"
      },
      "children": [
        {
          "elmType": "div",
          "style": {
            "position": "relative",
            "cursor": "pointer",
            "width": "=if(getMonth([$Start]) == getMonth([$End]) , ((getDate([$End]) - getDate([$Start]) + 1) / 31) * 100 + '%' , if(getMonth([$End]) > getMonth([$Start]) , ((31 - getDate([$Start]) + 1) / 31) * 100 + '%' , '0px' )",
            "left": "=((getDate([$Start]) - 1)  / 31) * 100 + '%'"
          },
          "attributes": {
            "class": "ms-bgColor-themePrimary ms-bgColor-themeTertiary--hover"
          },
          "customCardProps": {
            "directionalHint": "topCenter",
            "isBeakVisible": true,
            "openOnEvent": "hover",
            "formatter": {
              "elmType": "div",
              "style": {
                "display": "flex",
                "align-items": "center",
                "justify-content": "center",
                "width": "250px",
                "height": "30px",
                "margin": "10px",
                "font-weight": "bold"
              },
              "attributes": {
                "class": "ms-fontSize-l"
              },
              "children": [
                {
                  "elmType": "div",
                  "children": [
                    {
                      "elmType": "span",
                      "txtContent": "[$Start.displayValue]"
                    },
                    {
                      "elmType": "span",
                      "style": {
                        "margin-left": "5px",
                        "margin-right": "5px"
                      },
                      "txtContent": "-"
                    },
                    {
                      "elmType": "span",
                      "txtContent": "[$End.displayValue]"
                    }
                  ]
                }
              ]
            }
          }
        }
      ]
    }
  ]
}

[保存] をクリックすると、[GanttChart] 列にガントチャートが表示されます。

f:id:tecchan365:20210514204509p:plain

ガントチャートの幅を変更したい場合は、次の Twitter の動画を参考に調整ください。

以上、リストに月間ガントチャートを表示する方法でした。
"年間" ガントチャートを表示したい場合は、次の記事を参照ください。

mynote365.hatenadiary.com