MENU

SharePointサイトの容量をTeamsで通知(シンプル版)

SharePointサイトの使用量と残容量を掲載した通知を自分宛に送る ↓↓ というシンプルなもの。

確認したいサイトの所有者になっていれば問題ないと思われます。
まずはこのフローを作成してから応用していくのが良いと思われます。

いまいちしっくりこなくてフローをちょくちょく変更しています。
そのため、ときどき画像キャプチャと設定内容が異なっています。

目次

全体のフロー

一度作成してしまえば、他のサイトも調べたい、となったときにサイトURLを変更するだけで済みます。

詳細フロー

トリガー

暫定的に「フローを手動でトリガーする」を選択していますが、もちろんスケジュール実行にしても良いです。

変数を初期化する

アクション名:変数を初期化する(サイトURL)

「変数」で検索し、「変数を初期化する」のアクションを挿入します

名前:TargetSiteUrl

タイプ:文字列

値:自サイトのURLを設定

URLは https://ドメイン名/site/独自名 で構成されていると思います

SharePointにHTTP要求を送信します

アクション名:SharePoint に HTTP 要求を送信します

サイトのアドレスには変数で設定した「TargetSiteUrl」を設定

方法:GET

URI

_api/site/usage

ヘッダー(左)

Accept

ヘッダー(右)

application/json; odata=nometadata

JSON の解析

アクション名:JSON の解析

contentには「SharePointにHTTP要求を送信します」の本文を設定します。

@{body('SharePoint_に_HTTP_要求を送信します')}

schemaには以下をコピペ

{
    "type": "object",
    "properties": {
        "Bandwidth": {
            "type": "string"
        },
        "DiscussionStorage": {
            "type": "string"
        },
        "Hits": {
            "type": "string"
        },
        "Storage": {
            "type": "string"
        },
        "StoragePercentageUsed": {
            "type": "number"
        },
        "Visits": {
            "type": "string"
        }
    }
}

変数を初期化

取得した情報を格納するための変数を3つ設定します
※ここでは並列で作成しておりますが、並列にしなくても問題ありません

  1. アクション名:変数を初期化する(総容量バイト)
  2. アクション名:変数を初期化する(残容量バイト)
  3. アクション名:変数を初期化する(使用量バイト)

アクションの「タイプ」はすべて「浮動小数点数」を選択してください

参照しているアクションの名前が異なる場合は適宜変更してください(JSON_の解析、とか)

1つ目

名前:総容量バイト

if(
  equals(float(coalesce(body('JSON_の解析')?['StoragePercentageUsed'], 0)), 0),
  null,
  div(
    float(coalesce(body('JSON_の解析')?['Storage'], '0')),
    float(body('JSON_の解析')?['StoragePercentageUsed'])
  )
)

2つ目

名前:残容量バイト

if(
  equals(float(coalesce(body('JSON_の解析')?['StoragePercentageUsed'], 0)), 0),
  null,
  div(
    float(coalesce(body('JSON_の解析')?['Storage'], '0')),
    float(body('JSON_の解析')?['StoragePercentageUsed'])
  )
)

3つ目

名前:使用量バイト

float(coalesce(body('JSON_の解析')?['Storage'], '0'))

(試行錯誤中)変数の初期化ではなく「作成」を使用する

引継ぎ先に分かりやすくなるようにと「変数」を使用していましたが、配慮よりも正確性の方が大事よね、と考え直し中です(笑)

総容量の計算式は Storage ÷ StoragePercentageUsed です

※デフォルト設定は「Parse_JSON」かと思われますので、それぞれ「JSONの解析」と読み替えてください

総容量

バイト

if(
  equals(body('JSON_の解析')?['StoragePercentageUsed'], 0),
  null,
  div(
    float(body('JSON_の解析')?['Storage']),
    float(body('JSON_の解析')?['StoragePercentageUsed'])
  )
)

GB

div(
  if(
    equals(body('JSON_の解析')?['StoragePercentageUsed'], 0),
    0,
    div(
      float(body('JSON_の解析')?['Storage']),
      float(body('JSON_の解析')?['StoragePercentageUsed'])
    )
  ),
  1073741824
)

TB

formatNumber(
  div(
    if(
      equals(body('JSON_の解析')?['StoragePercentageUsed'], 0),
      0,
      div(
        float(body('JSON_の解析')?['Storage']),
        float(body('JSON_の解析')?['StoragePercentageUsed'])
      )
    ),
    1099511627776
  ),
  '0.00'
)
使用量

バイト

float(coalesce(body('JSON_の解析')?['Storage'], '0'))

GB

div(
  float(coalesce(body('JSON_の解析')?['Storage'], '0')),
  1073741824
)

TB

div(
  float(coalesce(body('JSON_の解析')?['Storage'], '0')),
  1099511627776
)
残容量

バイト

sub(
  div(float(body('JSON_の解析')?['Storage']), float(body('JSON_の解析')?['StoragePercentageUsed'])),
  float(body('JSON_の解析')?['Storage'])
)

GB

div(
  sub(
    div(float(body('JSON_の解析')?['Storage']), float(body('JSON_の解析')?['StoragePercentageUsed'])),
    float(body('JSON_の解析')?['Storage'])
  ),
  1073741824
)

GB(0.00ver)

div(
  float(
    formatNumber(
      add(
        mul(
          div(
            if(
              equals(float(coalesce(body('JSON_の解析')?['StoragePercentageUsed'], '0')), 0),
              0,
              sub(
                div(
                  float(coalesce(body('JSON_の解析')?['Storage'], '0')),
                  float(coalesce(body('JSON_の解析')?['StoragePercentageUsed'], '0'))
                ),
                float(coalesce(body('JSON_の解析')?['Storage'], '0'))
              )
            ),
            1073741824
          ),
          100
        ),
        0.4999999
      ),
      '0'
    )
  ),
  100
)

TB

formatNumber(
  div(
    sub(
      div(float(body('JSON_の解析')?['Storage']), float(body('JSON_の解析')?['StoragePercentageUsed'])),
      float(body('JSON_の解析')?['Storage'])
    ),
    1099511627776
  ),
  '0.00'
)

総容量(バイト)

if(
  equals(body('Parse_JSON')?['StoragePercentageUsed'], 0),
  null,
  div(
    float(body('Parse_JSON')?['Storage']),
    float(body('Parse_JSON')?['StoragePercentageUsed'])
  )
)

総容量(GB)

div(
  if(
    equals(body('Parse_JSON')?['StoragePercentageUsed'], 0),
    0,
    div(
      float(body('Parse_JSON')?['Storage']),
      float(body('Parse_JSON')?['StoragePercentageUsed'])
    )
  ),
  1073741824
)

総容量(TB)

formatNumber(
  div(
    if(
      equals(body('Parse_JSON')?['StoragePercentageUsed'], 0),
      0,
      div(
        float(body('Parse_JSON')?['Storage']),
        float(body('Parse_JSON')?['StoragePercentageUsed'])
      )
    ),
    1099511627776
  ),
  '0.00'
)

チャットまたはチャネルでメッセージを投稿する

アクション名:チャットまたはチャネルでメッセージを投稿する

※ここでは自分だけにチャットする設定を行っております※

投稿者:ユーザー
投稿先:グループチャット
Group chat:48:notes

メッセージに、今まで設定してきた変数ブロックを色々と追加します

注意:バイト数で記載されているため、GB記述したいといった要望については、また別の計算が必要になります

振り返り

今回のフローはCopilotと共に作成してみました。

実際にフローを動かしてみると、それっぽい数字が取得できました。
ただ、記憶域メトリックスを確認すると、私の場合は以下のような数値なんですよね。

25590.94 GB 空き (25600.00 GB 中)

数字が実数と合わないから目安にしといた方が良いかなと思いましたが、ここはあくまでバイト数だから当然でした;

各項目の意味

ちなみに、JSONの解析(body)で取得できる情報は下記のようです

Bandwidth通信帯域の使用量(通常はバイト単位やKB単位)
DiscussionStorage「ディスカッション」や「掲示板」機能に関連するストレージ使用量
Hitsページやリソースへのアクセス回数(ヒット数)
Storage使用しているストレージ容量(バイト単位)
StoragePercentageUsed全体のストレージ容量に対してどれくらい使われているかの割合
Visits訪問数(セッション単位)

※変数ではなくデータ操作の「作成」を使用した方が良いかもしれません

広告

目次