Microsoft365の中では、SharePointはクラウドストレージとしての役割が大きくなっています。通常、SharePointに保存されたファイルはブラウザやTeamsから操作することが多いと思いますが、Microsoft365では様々なアプローチ方法が提供されています。今回はSharePointに保存されたファイルの操作方法あれこれを紹介します。
目次
Teams
まずは基本のTeamsから。こちらは説明するまでもないと思います。TeamsのファイルはSharePointのドキュメントフォルダに保存されているので、Teamsからの操作は直接SharePointのファイルを操作していることになります。もちろん表示だけでなく、ダウンロード、コピー、削除など操作可能です。
右上の「i」マークを選択するとファイルの操作履歴も参照可能です。
SharePoint
TeamsからSharePointを開いてみましょう。メニューから「SharePointで開く」を選択します。
ほぼTeamsと同じように表示されています。SharePointから参照した場合、「ごみ箱」が左メニューで確認できます。ここでファイルを削除してみます。TeamsやSharePointで削除したファイルやフォルダは、一旦ごみ箱に移動しています。
もちろん、削除してごみ箱内に移動したファイルは復元することができます。さらに、ごみ箱から削除すると、「第2段階のごみ箱」へ移動する仕様となっています。
TeamsやSharePointからファイルを完全に削除するためには、この第2段階のごみ箱から削除する必要があります。
ファイルエクスプローラ
TeamsやSharePointから「同期」を実行するとWindowsのファイルエクスプローラからSharePoint上のファイル操作が可能となります。
ファイルエクスプローラからの操作が一番使いやすいですね。
Power Automate
Power Automateからは、ターゲットとするサイトやドキュメントフォルダを選択するだけでフォルダ内のファイル情報を取得したり、ファイル操作が出来るようになっています。
さらに、「ファイルが作成されたとき」などをトリガーしての操作はPower Automateならではの機能となります。
こちらのフローではファイル一覧を取得しています。
Power Automate for Desktop
現在プレビューの機能となりますが、Power Automate for DesktopにもSharePoint関連のアクションが利用できるようになっています。
ファイルのコピーを実行してみました。
簡単にファイルがコピーできました。
PnP PowerShell
PowerShellを利用してのSharePoint上のファイルへのアプローチ方法はいくつか提供されています。まずは「PnP PowerShell」を利用しての方法です。
参考:PnP PowerShell の概要 | Microsoft Learn(https://learn.microsoft.com/ja-jp/powershell/sharepoint/sharepoint-pnp/sharepoint-pnp-cmdlets)
まずは事前準備と接続です。
Install-Module SharePointPnPPowerShellOnline
Import-Module SharePointPnPPowerShellOnline
$Credential = Get-Credential
$SiteUrl = "https://hj545rkw.sharepoint.com/sites/SPFile"
Connect-PnPOnline -Url $SiteUrl -Credentials $Credential
フォルダ内のファイル一覧を取得します。
Get-PnPFolderItem -FolderSiteRelativeUrl "Shared Documents/General"
Name Type Items/Size Last Modified
---- ---- ---------- -------------
Book.xlsx File 11547 2023/03/28 0:04:07
ドキュメント.docx File 0 2023/03/28 0:04:16
ファイルをダウンロードします。
$ServerRelativeUrl = (Get-PnPFolderItem -FolderSiteRelativeUrl "Shared Documents/General" | Where {$_.Name -eq "Book.xlsx"}).ServerRelativeUrl
Get-PnPFile -Url $ServerRelativeUrl -Path c:\ -FileName Book.xlsx -AsFile
ファイルをごみ箱に移動します。
$FileId = (Get-PnPListItem -List "Shared Documents/General" | Where {$_.Fieldvalues["FileLeafRef"] -eq "Book.xlsx"}).Id
Move-PnPListItemToRecycleBin -List "Shared Documents/General" -Identity $FileId -Force
ごみ箱からファイルを復元します。
Get-PnPRecycleBinItem | Where {$_.Title -eq "Book.xlsx"} | Restore-PnPRecycleBinItem -Force
ごみ箱を空にします。
Clear-PnPRecycleBinItem -Force
Microsoft Graph
Microsoft365のAPIであるMicrosoft GraphでもPowerShellでファイルの操作が可能です。
参考:Microsoft.Graph.Files Module | Microsoft Learn
(https://learn.microsoft.com/ja-jp/powershell/module/microsoft.graph.files/?view=graph-powershell-1.0)事前準備と接続です。
Import-Module Microsoft.Graph.Files
Import-Module Microsoft.Graph.Sites
Connect-MgGraph
ターゲットとなるSharePointのサイトを特定してドライブIDを取得します。
$SiteId = (Get-MgSite -Search "SPFile").Id
$DriveId = (Get-MgSiteDefaultDrive -SiteId $SiteId).Id
サイトのドキュメントフォルダ内のアイテム一覧を取得します。
Get-MgDriveItemChild -DriveId $DriveId -DriveItemId "root"
特定のフォルダ(General)IDを取得してフォルダ内のファイル一覧を取得します。
$DriveItemId = (Get-MgDriveItemChild -DriveId $DriveId -DriveItemId "root" | Where {$_.Name -eq 'General'}).Id
Get-MgDriveItemChild -DriveId $DriveId -DriveItemId $DriveItemId | Select Name
Name
----
Book.xlsx
ドキュメント.docx
ファイルをダウンロードします。
$FileName = "Book.xlsx"
$HashTable = (Get-MgDriveItemChild -DriveId $DriveId -DriveItemId $DriveItemId | Where {$_.Name -eq $FileName}).AdditionalProperties
$DownloadUrl = $HashTable["@microsoft.graph.downloadUrl"]
Invoke-WebRequest -Uri $DownloadUrl -OutFile ”C:\$FileName”
ファイルを削除します。
$IteamId = (Get-MgDriveItemChild -DriveId $DriveId -DriveItemId $DriveItemId | Where {$_.Name -eq $FileName}).Id
Remove-MgDriveItem -DriveId $DriveId -DriveItemId $IteamId
SharePoint CSOM
SharePointクライアントオブジェクトモデル (CSOM)を利用してもSharePointのファイル操作が可能です。
参考:SharePoint のクライアント ライブラリ コードを使用して基本的な操作を完了する | Microsoft Learn(https://learn.microsoft.com/ja-jp/sharepoint/dev/sp-add-ins/complete-basic-operations-using-sharepoint-client-library-code)
事前準備として「Microsoft.SharepointOnline.CSOM」をダウンロード(https://learn.microsoft.com/ja-jp/archive/blogs/sharepoint_support/tips-for-csom-on-powershell)してインストールをしておきます。
参考:PowerShell で SharePoint CSOM を使用する際の Tips | Microsoft Learn
サイトにログインします
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") > $null
$UserName = "アカウント"
$Password = ConvertTo-SecureString 'パスワード -AsPlainText -Force
$SiteURL = "https://hj545rkw.sharepoint.com/sites/SPFile/"
$Credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $Password)
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Context.Credentials = $Credential
$objWeb = $Context.Web
$Context.Load($objWeb)
$Context.ExecuteQuery()
サイトのドキュメントフォルダ内のアイテム一覧を取得します。
$ObjList = $Context.Web.Lists.GetByTitle("ドキュメント")
$CamlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
$CamlQuery.ViewXml = "<View/>"
$ListItems = $ObjList.GetItems($CamlQuery)
$Context.Load($ListItems)
$Context.ExecuteQuery()
$listItems | Where {$_.FileSystemObjectType -eq "File"} | % {
$_["FileLeafRef"]
}
特定のフォルダ(General)内のファイル一覧を取得します。
$ObjList = $Context.Web.Lists.GetByTitle("ドキュメント")
$Folder = $objWeb.GetFolderByServerRelativeUrl("https://hj545rkw.sharepoint.com/sites/SPFile/Shared%20Documents/General")
$Context.Load($Folder)
$Context.ExecuteQuery()
$CamlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
$CamlQuery.ViewXml = "<View/>"
$CamlQuery.ViewXml =
@"
<View Scope='Recursive'>
<Query>
</Query>
</View>
"@
$CamlQuery.FolderServerRelativeUrl = $Folder.ServerRelativeUrl
$ListItems = $ObjList.GetItems($CamlQuery)
$Context.Load($ListItems)
$Context.ExecuteQuery()
$ListItems = $ObjList.GetItems($CamlQuery)
$Context.Load($ListItems)
$Context.ExecuteQuery()
$listItems | % {
$_["FileLeafRef"]
}
ファイルをダウンロードします。
$RelativeUrl = "/Sites/SPFile/Shared%20Documents/Book.xlsx"
$FilePath = "C:\Book.xlsx"
$FileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Context, $RelativeUrl)
$WriteStream = [System.IO.File]::Open($FilePath,[System.IO.FileMode]::Create)
$FileInfo.Stream.CopyTo($WriteStream)
$WriteStream.Close()
ファイルをごみ箱に移動
$objFile = $context.Web.GetFileByServerRelativeUrl("/sites/SPFile/Shared%20Documents/Book1.xlsx")
$Context.Load($objFile)
$Context.ExecuteQuery()
$objFile.Recycle()
$Context.ExecuteQuery()
第二のごみ箱に移動
$objWeb.RecycleBin.MoveAllToSecondStage()
$Context.ExecuteQuery()
ごみ箱からファイルを復元する
$Site = $Context.Site
$RecycleBinCollection = $Site.RecycleBin
$Context.Load($Site)
$Context.Load($RecycleBinCollection)
$Context.ExecuteQuery()
$Id = ($RecycleBinCollection | Where {$_.Title -eq "Book1.xlsx"})[0].Id
$RecycleBinItem = $Context.Web.RecycleBin.GetById($Id)
$RecycleBinItem.Restore()
$Context.ExecuteQuery()
ごみ箱を空にする
$Site.RecycleBin.DeleteAll()
$Context.ExecuteQuery()
ファイルを完全に削除する
$objFile = $objWeb.GetFolderByServerRelativeUrl("/sites/SPFile/Shared%20Documents/Book1.xlsx")
$objFile.DeleteObject()
$Context.ExecuteQuery()
以上、SharePointに保存されたファイルの操作について様々な方法を紹介しました。ブラウザを利用しての操作はもちろん、Power AutomateやPowerShellなどシステムマチックにアプローチできる方法など、利用シーンによって柔軟に使い分けられるようになっています。バックアップや、ファイルの使用容量のチェックなど使いどころはいくらでもありそうです。
著書の紹介欄
Hyper-Vで本格的なサーバー仮想環境を構築。仮想環境を設定・操作できる!
できるPRO Windows Server 2016 Hyper-V
◇Hyper-Vのさまざまな機能がわかる ◇インストールからの操作手順を解説 ◇チェックポイントやレプリカも活用できる Windows Server 2016 Hyper-Vは、仮想化ソフトウェア基盤を提供する機能であり、クラウドの実現に不可欠のものです。 本書では、仮想化の基礎知識から、Hyper-Vでの仮想マシンや仮想スイッチの設定・操作、プライベートクラウドの構築、Azureとの連携などを解説します。
初めてのWindows Azure Pack本が発売
Windows Azure Pack プライベートクラウド構築ガイド
本書は、Windows Azure PackとHyper-Vを利用し、企業内IaaS(仮想マシン提供サービス)を構成するための、IT管理者に向けた手引書です。試用したサーバーは、最小限度の物理サーバーと仮想マシンで構成しています。Windows Azure Packに必要なコンポーネントのダウンロード、実際にプライベートクラウド構築する過程を、手順を追って解説しています。これからプライベートクラウドの構築を検討するうえで、作業負担の軽減に役立つ一冊です。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(449)
-
イベント(161)
-
カルチャー(36)
-
デザイン(17)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudflare
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- Desiner
- DeveloperExpert
- DevSecOpsThon
- DNS
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOソリューションパートナー
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- perplexity
- PHP
- PHPcon
- PHPerKaigi
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- アドベントカレンダー
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- マルチプレイ
- ミドルウェア
- モバイル
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- 京大ミートアップ
- 協賛レポート
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP