くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

必須理解!命名規則のパスカルケース、スネークケース、キャメルケース

はじめに

今回は命名規則パスカルケース、スネークケース、キャメルケースについてまとめました。
命名規則を決めておくことで可読性やメンテナンス性の向上というメリットがあります。

命名する際は
 ・名前から役割や型が推測できる
 ・明確で簡潔な名前をつける
 ・一般的ではない省略の仕方は極力避ける
 ・特殊文字は使わない
を意識して考えるのがポイントです!!

目次

パスカル、スネーク、キャメル

テーブル名、カラム名、変数などで利用される命名規則です。
会社ごとに利用するケースは様々ですが、パスカルケースやスネークケースが多そう。

パスカルケース

各単語の最初の文字を大文字、残りの文字は小文字にする方法
 例(CustomerData)

スネークケース

単語をアンダーバーで繋げる方法
 例(first_name、is_available)

キャメルケース

先頭の文字は小文字、そのあと各単語の最初の文字を大文字にする方法
 例(totalAmount、databaseConnection)

よくある、テーブルとカラムの命名ルール

テーブル名とカラム名は両方同じケースで、テーブル名は複数形にするのはよく見かける形です。

パスカルケースの場合
 テーブル名:Groups
 カラム名:GroupId、GroupName、GroupType

スネークケースの場合
 テーブル名:books
 カラム名:id、title、type、author


この記事が参考になったな、と思ったらお気に入り宜しくお願いします!!

【SharePoint】【多要素認証】PowerShellでSharePointに接続するときの必須事項

はじめに

PowerShell で SharePointOnline の管理を行う際に、多要素認証が原因でサインインに失敗することがあります。
今回はその時の対処方法を紹介します。

目次

スクリプト紹介

結論から言うと -Credential を使ってサインインしようとすることが原因だったりします。
多要素認証を有効にしている場合は下記コマンドのみを実行してください。

Connect-SPOService -Url https://[テナント名]-admin.sharepoint.com

認証後に別のスクリプトを実行したらうまく情報を取得できました。

Connect-SPOService -Url https://[テナント名]-admin.sharepoint.com
Get-SPOSite

事前準備

PowerShellSharePoint Onlineの管理を行う場合はSharePoint Online 管理シェルをPCにインストールしている必要があります。

・下記コマンドでSharePoint Online 管理シェルがインストールされているか確認します。

Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select Name,Version


SharePoint Online 管理シェルがインストールされていない場合は下記コマンドで最新版をインストールします。

Install-Module -Name Microsoft.Online.SharePoint.PowerShell


・下記コマンドでSharePoint Online 管理シェルを最新版にすることができます。

Update-Module -Name Microsoft.Online.SharePoint.PowerShell

注意

SharePoint Online 管理シェルが複数バージョンインストールされている場合、正常に動作しない場合があるようです。
複数バージョンインストールされている場合はPCから一度すべてのSharePoint Online 管理シェルを削除して再度インストールを行ってみてください。

・下記コマンドを実行することでSharePoint Online 管理シェルを削除できます。

UnInstall-Module -Name Microsoft.Online.SharePoint.PowerShell


参考

SharePoint Online 管理シェルでの作業の開始 | Microsoft Learn

【SharePoint】ビューの書式設定で吹き出しを作ってみよう

はじめに

こんにちは、くらっちです。
以前別の記事で、SharePointOnlineのビューの書式設定を使って自己紹介カードを作ったので今回はカーソルをあてた時に吹き出しが表示される機能を追加しました。
サンプルのJSONも用意しているので気になっている方はぜひお試しください。
この記事のサンプルを見れば使い方がざっくりとでも理解してもらえると思います。

※前回記事 kurattyodiary.hatenablog.com

目次

実装例

サンプルコードをリストビューに設定すると下図のようになります。
自己紹介カードの右側色付きの部分にカーソルを合わせると吹き出しが表示されます。

使用する列

今回作成する自己紹介カードに必要な列はこちら。
リストに下記列を追加してください。

表示名 内部名 列の種類 備考
ユーザー Person ユーザーまたはグループ ユーザーのみ選択可
電話番号 PhoneNumber 1行テキスト
所属部署 Department 選択肢 ドロップダウン形式
紹介文 Introduction 複数行テキスト プレーンテキスト

ビューの設定

ビューには下記の列を表示させます。

  • ID ⇒(名前クリックでアイテムのフォームを開くため)
  • ユーザー ⇒(写真・名前・メールアドレスを表示するため)
  • 電話番号 ⇒(電話番号を表示するため)
  • 所属部署 ⇒(所属部署を表示するため)
  • 紹介文 ⇒(吹き出しの中身のため)

サンプルコード

下記のコードをコピーして「ビューの書式設定」に貼り付けて下さい。
コード内の「テナント名]、[サイト名]、[リスト名]は実際のリストに合わせてください。
また、[$Department] == '総務部' の部分も選択肢の内容に合わせてください。

ビューの書式設定は、HTMLをjson形式で記述しています。
HTMLを知っていればカスタマイズも簡単です。
試行錯誤しながら色々使い倒すことをおすすめします!

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json",
  "hideSelection": true,
  "hideListHeader": true,
  "rowFormatter": {
    "elmType": "div",
    "style": {
      "width": "350px",
      "margin": "10px",
      "float": "left",
      "padding": "0px 0px 0px 10px",
      "box-shadow": "3px 3px 5px 0 darkgrey"
    },
    "attributes": {
      "class": "ms-bgColor-neutralLighterAlt ms-bgColor-neutralLight--hover"
    },
    "children": [
      {
        "elmType": "div",
        "children": [
          {
            "elmType": "img",
            "style": {
              "display": "block",
              "width": "75px",
              "border-radius": "50%"
            },
            "attributes": {
              "src": "='/_layouts/15/userphoto.aspx?size=M&username=' + [$Person.email]"
            }
          }
        ]
      },
      {
        "elmType": "div",
        "style": {
          "width": "230px",
          "font-size": "1.0em",
          "text-align": "left",
          "overflow": "hidden",
          "text-overflow": "ellipsis",
          "white-space": "nowrap",
          "padding": "5px 5px 10px 5px",
          "margin": "0px 0px 0px 10px"
        },
        "children": [
          {
            "elmType": "div",
            "children": [
              {
                "elmType": "a",
                "style": {
                  "cursor": "pointer",
                  "font-size": "1.2rem",
                  "text-decoration": "none",
                  "class": "ms-fontColor-neutralPrimary"
                },
                "attributes": {
                  "href": "='https://[テナント名].sharepoint.com/sites/[サイト名]/Lists/[リスト名]/DispForm.aspx?ID=' + [$ID]",
                  "target": "_blank"
                },
                "children": [
                  {
                    "elmType": "span",
                    "txtContent": "[$Person.title]",
                    "attributes": {
                      "class": "ms-fontColor-neutralPrimary"
                    }
                  }
                ]
              },
              {
                "elmType": "span",
                "style": {
                  "float": "right",
                  "margin": "5px 5px 5px 15px"
                },
                "children": [
                  {
                    "elmType": "a",
                    "style": {
                      "cursor": "pointer"
                    },
                    "attributes": {
                      "href": "='https://teams.microsoft.com/l/chat/0/0?users=' + [$Person.email]",
                      "target": "_blank"
                    },
                    "children": [
                      {
                        "elmType": "span",
                        "attributes": {
                          "iconName": "OfficeChat",
                          "class": "ms-fontColor-neutralPrimary"
                        },
                        "style": {
                          "font-size": "1.3em"
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "elmType": "div",
            "txtContent": "[$Department]"
          },
          {
            "elmType": "div",
            "txtContent": "[$PhoneNumber]"
          },
          {
            "elmType": "div",
            "txtContent": "[$Person.email]"
          }
        ]
      },
      {
        "elmType": "div",
        "style": {
          "display": "block",
          "width": "25px",
          "height": "94px",
          "background-color": "=if([$Department] == '総務部', 'gold',if([$Department] == '営業部','bisque',if([$Department] == 'インフラ事業部','cornflowerblue',if([$Department] == 'クラウド事業部','forestgreen','white')))"
        },
        "customCardProps": {
          "openOnEvent": "hover",
          "isBeakVisible": true,
          "directionalHint": "rightTopEdge",
          "formatter": {
            "elmType": "div",
            "style": {
              "max-width": "300px",
              "padding": "20px"
            },
            "txtContent": "[$Introduction]"
          }
        },
        "children": [
          {
            "elmType": "span",
            "attributes": {
              "iconName": "",
              "class": "ms-fontColor-neutralPrimary"
            }
          }
        ]
      }
    ]
  }
}

ここが吹き出し

上記コードの中で、吹き出しを作っているのはこの部分です。
それ以外の部分でカードを作っています。

        "customCardProps": {
          "openOnEvent": "hover",
          "isBeakVisible": true,
          "directionalHint": "rightTopEdge",
          "formatter": {
            "elmType": "div",
            "style": {
              "max-width": "300px",
              "padding": "20px"
            },
            "txtContent": "[$Introduction]"
          }
        },
        "children": [
          {
            "elmType": "span",
            "attributes": {
              "iconName": "",
              "class": "ms-fontColor-neutralPrimary"
            }
          }
        ]

最後に

この記事が気に入った、参考になったという場合は評価して頂けるとすごく励みになります!
最後まで読んでいただいてありがとうございました。

参考

SharePointリストの書式設定(JSON) チートシート #JSON - Qiita

【PowerAutomate】フローを順番に実行したい!並列処理を制御する

はじめに

こんにちは、くらっちです。
今回はPowerAutomateで1つのフローを順番に実行する設定を紹介します。
PowerAutomateで作成したフローはデフォルトの状態だとトリガーが起動した直後に処理が開始されるため、同じフローが同時に複数実行される場合があります。(並列処理)


しかし、それだと「前のフローが終わった後に、次のフローを実行したい」という場合に不都合です。
そんな時の設定が「コンカレンシーの制御」です。

目次

コンカレンシーの制御

「コンカレンシーの制御」は、同時に実行するフローの数(次数)を制御するものです。
次数を2にしたらこのフローは2個まで同時に実行できます。
次数を100にするとこのフローは100個同時に実行できます。
ということはこの次数を1にすれば、フローを1個ずつ実行させることができるのです。

設定の手順

設定の手順は簡単4ステップです。

1.トリガーをクリックして設定を表示
2.「コンカレンシーの制御」項目が「オフ」になっていたら「オン」にする
3.「並列処理の次数」を1にすること
4.保存して完了



あっという間にできちゃいますね。
ぜひ、PowerAutomateを遊んで試してみてください。

この記事が気に入った、参考になったという場合は評価して頂けるとすごく励みになります!
最後まで読んでいただいてありがとうございました。

【SharePoint】誰でも使えるビューの書式設定・基本編

はじめに

こんにちは、くらっちです。
先日、部内のメンバー紹介するための仕組みをSharePointで作りたいという要望があったので早速ビューの書式設定を使って自己紹介カードを作ってみました。
サンプルのJSONも用意したので「ビューの書式設定」が気になっている方はぜひお試しください。
この記事のサンプルを見れば使い方がざっくりとでも理解してもらえると思います。

目次

実装例

今回作成する自己紹介カードの完成イメージはこんな感じです。
JSONの中身が理解がしやすいようにシンプルな構成にしています。

機能の紹介

今回作る自己紹介カードには以下の機能を付けました。

SharePointリストについて

SharePointリストの「ビューの書式設定」を使ってカードを作ります。
リストの設定内容については以下を参考にしてください。

使用する列

今回作成する自己紹介カードに必要な列はこちら。
リストに下記列を追加してください。

表示名 内部名 列の種類 備考
ユーザー Person ユーザーまたはグループ ユーザーのみ選択可
電話番号 PhoneNumber 1行テキスト
所属部署 Department 選択肢 ドロップダウン形式

ビューの設定

ビューには下記の列を表示させます。

  • ID ⇒(名前クリックでアイテムのフォームを開くため)
  • ユーザー ⇒(写真・名前・メールアドレスを表示するため)
  • 電話番号 ⇒(電話番号を表示するため)
  • 所属部署 ⇒(所属部署を表示するため)

ビューの書式設定をカスタマイズ

下記手順を実施して、ビューの書式設定を編集します。

  1. 自己紹介カードを表示させたいリストを開く。
  2. 「現在のビューの書式設定」をクリック。
  3. 「ビューの書式設定」タブで「詳細モード」をクリック。
  4. この後のサンプルコードを全文コピーして貼り付ける。
  5. 保存する。

サンプルコード

下記のコードをコピーして「ビューの書式設定」に貼り付けて下さい。
コード内の「テナント名]、[サイト名]、[リスト名]は実際のリストに合わせてください。
また、[$Department] == '総務部' の部分も選択肢の内容に合わせてください。

ビューの書式設定は、HTMLをjson形式で記述しているイメージです。
HTMLを知っていればカスタマイズも簡単です。
試行錯誤しながら色々使い倒してください。

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json",
  "hideSelection": true,
  "hideListHeader": true,
  "rowFormatter": {
    "elmType": "div",
    "style": {
      "width": "320px",
      "margin": "10px",
      "float": "left",
      "padding": "0px 0px 0px 10px",
      "box-shadow": "3px 3px 5px 0 darkgrey"
    },
    "attributes": {
      "class": "ms-bgColor-neutralLighterAlt ms-bgColor-neutralLight--hover"
    },
    "children": [
      {
        "elmType": "div",
        "children": [
          {
            "elmType": "img",
            "style": {
              "display": "block",
              "width": "75px",
              "border-radius": "50%"
            },
            "attributes": {
              "src": "='/_layouts/15/userphoto.aspx?size=M&username=' + [$Person.email]"
            }
          }
        ]
      },
      {
        "elmType": "div",
        "style": {
          "width": "200px",
          "font-size": "1.0em",
          "text-align": "left",
          "overflow": "hidden",
          "text-overflow": "ellipsis",
          "white-space": "nowrap",
          "padding": "5px 5px 10px 5px",
          "margin": "0px 0px 0px 10px"
        },
        "children": [
          {
            "elmType": "div",
            "children": [
              {
                "elmType": "a",
                "style": {
                  "cursor": "pointer",
                  "font-size": "1.2rem",
                  "text-decoration": "none",
                  "class": "ms-fontColor-neutralPrimary"
                },
                "attributes": {
                  "href": "='https://[テナント名].sharepoint.com/sites/[サイト名]/Lists/[リスト名]/DispForm.aspx?ID=' + [$ID]",
                  "target": "_blank"
                },
                "children": [
                  {
                    "elmType": "span",
                    "txtContent": "[$Person.title]",
                    "attributes": {
                      "class": "ms-fontColor-neutralPrimary"
                    }
                  }
                ]
              },
              {
                "elmType": "span",
                "style": {
                  "float": "right",
                  "margin": "5px 5px 5px 15px"
                },
                "children": [
                  {
                    "elmType": "a",
                    "style": {
                      "cursor": "pointer"
                    },
                    "attributes": {
                      "href": "='https://teams.microsoft.com/l/chat/0/0?users=' + [$Person.email]",
                      "target": "_blank"
                    },
                    "children": [
                      {
                        "elmType": "span",
                        "attributes": {
                          "iconName": "OfficeChat",
                          "class": "ms-fontColor-neutralPrimary"
                        },
                        "style": {
                          "font-size": "1.3em"
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "elmType": "div",
            "txtContent": "[$Department]"
          },
          {
            "elmType": "div",
            "txtContent": "[$PhoneNumber]"
          },
          {
            "elmType": "div",
            "txtContent": "[$Person.email]"
          }
        ]
      },
      {
        "elmType": "div",
        "style": {
          "display": "block",
          "width": "25px",
          "height": "94px",
          "background-color": "=if([$Department] == '総務部', 'gold',if([$Department] == '営業部','bisque',if([$Department] == 'インフラ事業部','cornflowerblue',if([$Department] == 'クラウド事業部','forestgreen','white')))"
        }
      }
    ]
  }
}

文末感想

今度はこのカードをカスタマイズして、ユーザーの自己紹介文を吹き出しみたいに表示できるようにチャレンジしてみようと思います✨
この記事が気に入った、参考になったという場合は評価して頂けるとすごく励みになります!
最後まで読んでいただいてありがとうございました。

参考

SharePointリストの書式設定(JSON) チートシート #JSON - Qiita

【SharePoint】SharePointOnlineでスクリプトエディタが使えるクラシックサイトを作成する

はじめに

こんにちは、くらっちです。
SharePoint Onlineは現在モダンサイトが標準ですが、いまだクラシックサイトを使っている企業様も多くいらっしゃいます。
HTML、JavascriptCSSを使ってSharePointサイトのページを作成する機会もあるでしょう。

Webパーツページでスクリプトエディターを使ってJavascriptを活用した構築したいですよね。
ただ、チームサイトやコミュニケーションサイトのWebパーツページにはスクリプトエディターは含まれていません。
そこで今回は「SharePointOnlineでスクリプトエディターが使えるクラシックサイトを作成する方法」を紹介します。

目次

クラシックサイトを作成する

その他のサイトを参照する > その他のテンプレート

スクリプトエディタを使うには「その他のサイトを参照する > その他のテンプレート」を選択します。
以下、操作手順です。

SharePoint管理センター に接続
・ 「+作成」をクリック
・ 「その他のサイトを参照する」をクリック
・ 「その他のテンプレート」を選択

・ 「サイトを再度読み込みますか?」というメッセージが出たら「キャンセル」をクリック
  ※ここはどちらのボタンを選んでも以降の操作はできます。

チームサイト(クラシック表示)を選択

・ 別タブで「サイト コレクションの作成」が出てくるのでそちらを操作します。
・ 各項目を入力。テンプレートの選択は「チームサイト(クラシック表示)」を必ず選択。
・ 管理者には、管理者にしたいアカウントを入力して右側のアイコンをクリック。
  エラーメッセージが表示されずアカウントが認識されているようであればOK。
・ 「OK」ボタンをクリック。
・ 数分後、クラシックサイトが作成されるのでSharePoint管理センターで確認。
  これでスクリプトエディタが使えるクラシックサイトが完成です。

ちょっと分かりずらいところにあるので頭の片隅にでも置いておくといいかなーと思います。
備忘としてお気に入り登録などしてもらえると嬉しいです!

【PowerShell】CSVファイルを読み込んでユーザー作成&ライセンス付与する

はじめに

こんにちは、くらっちです。
今回はPowerShell で「ユーザーを新規作成&ライセンスも付与」してみよう!
ということでサンプルコードを作りました。
初心者向けの備忘録的な記事となります。

やろうとしていること

ユーザー情報が記載されたcsvファイルを読み込んでユーザーを一括登録します。
csvファイルには「UserPrincipalName、FirstName、LastName」のみ記載。
パスワードは「p@ss + MMdd」で固定、初期ログイン時に変更必須。
付与するライセンスは「Microsoft Business Basic」で固定。

サンプルコード

下記サンプルコードは、基本そのまま利用できます。
適宜<>の中身は修正してください。
読み込むcsvファイルは「UTF-8」形式にしてください。

#Set-MgUserLicense に必要なアクセス許可
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All
#Get-MgUser に必要なアクセス許可
Connect-MgGraph -Scopes User.Read.All

$times = Get-Date -Format "yyyyMMddHHmmdd"
$todays = Get-Date -Format "MMdd"
$csvpath = "<import_filepath>\users.csv"

#csvファイルを読み込んで繰り返し処理
Import-Csv -Path $csvpath | ForEach-Object { 
    #ユーザーを新規作成
    New-MgUser -UserPrincipalName $_.UserPrincipalName -mailNickname "sample" -AccountEnabled -DisplayName "$($_.FirstName) $($_.LastName)" -GivenName $_.LastName -Surname $_.FirstName -UsageLocation "JP" -PasswordProfile @{ "Password"="p@ss$todays"; "forceChangePasswordNextSignIn" = $true
} 

    #新規作成したユーザー情報を取得
    $user = Get-MgUser -All -Filter "UserPrincipalName eq '$($_.UserPrincipalName)'"
    $userid = $user.ID

    #「O365_BUSINESS_ESSENTIALS」の ライセンス情報を取得
    $EmsSku = Get-MgSubscribedSku -All | Where-Object SkuPartNumber -eq 'O365_BUSINESS_ESSENTIALS'
    #ライセンス付与
    Set-MgUserLicense -UserId $userid -AddLicenses @{SkuId = $EmsSku.SkuId} -RemoveLicenses @()
}

このエラーが出た場合どうする?

New-MgUser : 引数 'True' を受け入れる位置指定パラメーターが見つかりません。
$true の記載が不要な場所に $true が入力されている可能性があります。

New-MgUser : Another object with the same value for property userPrincipalName already exists.
登録しようとしたユーザーは既に組織に存在しているようです。
※userPrincipalName の重複あり。

Set-MgUserLicense : Subscription with SKU … does not have any available licenses.
付与しようとしたライセンスに余りがない可能性があります。
ライセンスを追加購入して処理を実行しましょう。

参考

New-MgUser (Microsoft.Graph.Users) | Microsoft Learn
Get-MgUser (Microsoft.Graph.Users) | Microsoft Learn
Get-MgSubscribedSku (Microsoft.Graph.Identity.DirectoryManagement) | Microsoft Learn
Set-MgUserLicense (Microsoft.Graph.Users.Actions) | Microsoft Learn