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 -ForceMicrosoft 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 $IteamIdSharePoint 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
- 
                  技術情報(516)
 - 
                  イベント(193)
 - 
                  カルチャー(50)
 - 
                  デザイン(47)
 
TAG
- "eVTOL"
 - "Japan Drone"
 - "ロボティクス"
 - "空飛ぶクルマ"
 - 5G
 - Adam byGMO
 - AGI
 - AI
 - AI人財
 - APT攻撃
 - AWX
 - BIT VALLEY
 - Blade
 - blockchain
 - Canva
 - ChatGPT
 - ChatGPT Team
 - Claude Team
 - cloudflare
 - cloudnative
 - CloudStack
 - CM
 - CNDO
 - CNDT
 - CODEGYM Academy
 - ConoHa
 - ConoHa、Dify
 - CS
 - CSS
 - CTF
 - DC
 - design
 - Designship
 - Desiner
 - DeveloperExper
 - DeveloperExpert
 - DevRel
 - DevSecOpsThon
 - DiceCTF
 - Dify
 - DNS
 - Docker
 - DTF
 - Expert
 - Felo
 - GitLab
 - GMO AIR
 - GMO AIロボティクス大会議&表彰式
 - GMO DESIGN AWARD
 - GMO Developers Day
 - GMO Developers Night
 - GMO Developers ブログ
 - GMO Flatt Security
 - GMO GPUクラウド
 - GMO Hacking Night
 - GMO kitaQ
 - GMO SONIC
 - GMOアドパートナーズ
 - GMOアドマーケティング
 - GMOイエラエ
 - GMOインターネット
 - GMOインターネットグループ
 - GMOクラウド]
 - GMOグローバルサイン
 - GMOサイバーセキュリティbyイエラエ
 - GMOサイバーセキュリティ大会議
 - GMOサイバーセキュリティ大会議&表彰式
 - GMOソリューションパートナー
 - GMOデジキッズ
 - GMOブランドセキュリティ
 - GMOペイメントゲートウェイ
 - GMOペパボ
 - GMOメディア
 - GMOリサーチ
 - GMO大会議
 - Go
 - GPU
 - GPUクラウド
 - GTB
 - Hardning
 - Harvester
 - HCI
 - iOS
 - IoT
 - ISUCON
 - JapanDrone
 - Java
 - JJUG
 - K8s
 - Kaigi on Rails
 - Kids VALLEY
 - KidsVALLEY
 - LLM
 - MCP
 - MetaMask
 - MySQL
 - NFT
 - NVIDIA
 - NW構成図
 - NW設定
 - Ollama
 - OpenStack
 - Perl
 - perplexity
 - PHP
 - PHPcon
 - PHPerKaigi
 - PHPカンファレンス
 - QUIC
 - Rancher
 - RPA
 - Ruby
 - Selenium
 - Slack
 - Slack活用
 - Spectrum Tokyo Meetup
 - splunk
 - SRE
 - SSL
 - Terraform
 - TLS
 - TypeScript
 - UI/UX
 - vibe
 - VLAN
 - VS Code
 - Webアプリケーション
 - WEBディレクター
 - XSS
 - アドベントカレンダー
 - イベントレポート
 - インターンシップ
 - インハウス
 - オブジェクト指向
 - オンボーディング
 - お名前.com
 - カルチャー
 - クリエイター
 - クリエイティブ
 - コーディング
 - コンテナ
 - サイバーセキュリティ
 - システム研修
 - スクラム
 - スペシャリスト
 - セキュリティ
 - ソフトウェアテスト
 - チームビルディング
 - デザイン
 - ドローン
 - ネットのセキュリティもGMO
 - ネットワーク
 - ビジネス職
 - ヒューマノイド
 - ヒューマノイドロボット
 - プログラミング教育
 - ブロックチェーン
 - ベイズ統計学
 - マルチプレイ
 - ミドルウェア
 - モバイル
 - ゆめみらいワーク
 - リモートワーク
 - レンタルサーバー
 - ロボット
 - 京大ミートアップ
 - 人材派遣
 - 出展レポート
 - 動画
 - 協賛レポート
 - 基礎
 - 多拠点開発
 - 大学授業
 - 宮崎オフィス
 - 展示会
 - 応用
 - 技育プロジェクト
 - 技術広報
 - 採用
 - 採用サイトリニューアル
 - 採用活動
 - 新卒
 - 新卒研修
 - 日本科学未来館
 - 映像
 - 映像クリエイター
 - 暗号
 - 業務効率化
 - 業務時間削減
 - 機械学習
 - 決済
 - 物理暗号
 - 生成AI
 - 視覚暗号
 - 開発生産性
 - 開発生産性向上
 - 階層ベイズ
 - 高機能暗号
 
PICKUP
- 
                  
                    
                                        東京・福島・福岡の専門学校3校でConoHa AI Canvasを用いた講義を実施しました
技術情報
 - 
                  
                    
                                        【協賛レポート・前編】Designship 2025|参加者と“共につくる”デザインのかたち──私たちの挑戦を振り返る
デザイン
 - 
                  
                    
                                        NFSのパフォーマンストラブルに対応した話
技術情報
 - 
                  
                    
                                        Microsoft Entra アプリケーション プロキシ × Windows 統合認証環境での NTLM 廃止影響と対策
技術情報
 - 
                  
                    
                                        GMOインターネットグループ合同テクノロジーインターンシップ2025 体験記~ML/Webコース編①~
カルチャー
 - 
                  
                    
                                        ChatGPTとConoHa AI Canvasで検証:生成AIが変えるクリエイティブ制作
技術情報