技術情報ブログ
SharePoint
2025.07.09

SharePoint Online の 共有リンクを印刷可能なレポート化するまで

SharePoint Online の 共有リンクを印刷可能なレポート化するまで
みやみや

こんにちは、みやみやです。

普段は「バス予報」という弊社サービスのシステム開発のマネジメントをしていますが、最近は、古くからある Azure の既存環境のコード化するのが楽しい気がしてきています

今回の記事は、1 年ほど前に、「SharePoint のドキュメントライブラリにて、作成された共有リンクのレポートを作成する」というお題を自分に課して、自主練したときのゆるい記事です

当時を思い出しながら、実際に帳票のようなレポート化するまで、どのような思考・手順で進めたのかを記載します

 

1. 調査

公式に SharePoint サイトでのファイルとフォルダーの共有に関するレポート という情報がありました

ただ、こちらの記載が気になってしまいました

クリックされていない直接メールで送信されたリンクと、[すべてのリンク] はレポートに含まれません。

それでもどうにかできないのかな?っと調べたところ、公式の情報ではないですが、隠しリストの Sharing Links (言語設定が日本語だと共有リンク) で取得できそうということが判りました
※公式の情報では見つけられなかったので、情報ソースは載せておりません
※本情報を利用するときには、自己責任でご利用ください

実業務では、リスクを「許容(保有)する」「回避する」というような、リスクマネジメントを行いますよね

今回は自主練ですし、取得したデータを帳票にするという一連の流れがやりたいので、許容して進むことにします

そして、レポートにするときには、Excel を使うことにしました

Excel Online は Office Script でマクロが組めPower Automate からスクリプトから実行できるので、Microsoft 365 を契約していることを前提にすると、Excel は使える状態だと思いますので、とても相性が良さそうです

 

2. 共有したときの状態をチェック

SharePoint Online に環境を作り、様々な状態で、共有リンクとレポート対象となるリストアイテムの権限(RoleAssignments)の状態、隠しリストのデータのチェックしていきました

  • 一度も共有リンクが作られていないとき

  • サイト内のユーザーに共有したとき

  • 共有リンクを編集して、サイト内のユーザーを追加したとき

  • 共有リンクを編集して、サイト外ユーザーを追加したとき

  • 共有リンクを編集して、テストグループを追加したとき

  • 共有リンクを編集して、ゲストユーザーを追加したとき

  • 共有リンクを編集して、外部ユーザーを追加したとき

  • 外部ユーザーで共有されたファイルを閲覧したとき

  • 共有を停止したとき

  • 「すべてのユーザー」で共有したとき

  • 「すべてのユーザー」と並行して「選択したユーザー」にも共有したとき

ちなみに、状態を見るときには、PnP.PowerShell を使いました

 

3. Power Automate を使って、共有リンクの情報を Excel ファイルに登録

対象となるドキュメントライブラリに対して、手順 2 で把握した情報を Excel のテーブルに登録するフローを作ります

取得したデータの例はこちら

  • サイトユーザーの情報

    _api/web/SiteUsers?$select=Id,Title,PrincipalType,Email,IsEmailAuthenticationGuestUser,IsShareByEmailGuestUser,IsSiteAdmin
  • 共有リンクの情報を取得する API

    _api/web/lists/getbytitle('共有リンク')/items?$select=Id,SharingDocId,AvailableLinks
  • ドキュメントライブラリの情報を取得する API

    _api/web/lists/getbytitle('ドキュメント')/items?$select=HasUniqueRoleAssignments,File/Length,File/Name,File/TimeCreated,File/TimeLastModified,Id,Title,Author/EMail,Author/Title,Editor/EMail,Editor/Title,FileRef,RoleAssignments/Member/Title,RoleAssignments/Member/PrincipalType,RoleAssignments/Member/Users,RoleAssignments/Member/Users/Title,RoleAssignments/Member/Users/Email,RoleAssignments/Member/Users/IsEmailAuthenticationGuestUser,RoleAssignments/Member/Users/IsShareByEmailGuestUser,RoleAssignments/Member/Users/AadObjectId&$expand=File,RoleAssignments/Member,RoleAssignments/Member/Users,Author,Editor&$orderby=Id

例ではちょっと多めに取ってしまっています

取得したデータの例

 

4. 取得したデータを帳票っぽく出せるような Office Script を作成する

下記のようなスクリプトを書きました

  • データが登録されたテーブルから、帳票を作るスクリプト (Report)

  • 手順 3 の前に流す、登録するテーブルをクリアするスクリプト (ClearData)

帳票は、見た目を考えてこういう形になりました

取得したデータを帳票にする見た目

罫線に関しては、セルのデータを 1 つ 1 つ判定して線を弾いたりしているのではなく、Office Script で条件付き書式を作っていて、それをセルに当てはめることで実現しています

 

5. Power Automate と Office Script を合わせて 1 つのフローにする

一旦全体感はこんな感じです

Power Automate と Office Script を合わせて 1 つのフローにする

スコープ部分を少し開くとこんな感じになっています

Power Automate と Office Script を合わせて 1 つのフローにする(スコープ部分1)
Power Automate と Office Script を合わせて 1 つのフローにする(スコープ部分2)

Power Automate を触っている方は、「こういうことやっているんだろうな」とイメージが付くかと思います

 

考察

初めて Office Script を触ってみたりと、普段扱ってない技術ばかりでとても時間がかかりましたが、一応完成して動いてくれたら嬉しいものです

印刷レイアウトも調整してはいますが、昔の記憶だと、プリンターによって余白が微妙に違うとか、印刷位置が違うとか、色々あるかとは思います

ただ、帳票として Excel を使うというアプローチは、ローコードの時代でも使えそうです

miyamiya

みやみや

🖊みやみやさんの「Microsoftクラウド技術情報ブログ」一覧はこちら
🖊みやみやさんの「MaaSブログ」一覧はこちら

ビジュアル系プログラマー、ビジュアル系 PM を自称して 20 年近くが経ちました

弊社 MaaS 製品全般で、開発・運用側のマネジメントをしながら、時々開発もしています

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2026.03.03

Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?-

2026.03.03

Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない

2026.02.25

Dataverse:Dataverse入門(3)!リレーションでデータを構造化する-テーブル間の連携とは?

2026.02.18

Dataverse:Dataverse入門(2)!テーブルに列を追加してみる-列の型の決め方

2026.02.11

Dataverse:Dataverse入門(1)!注文管理アプリを作ってみる-Dataverseテーブルの作り方

attributeO/Rマッパーマーカークラスタリングライブラリviewメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較Power Apps モデル駆動型validationazure sql databasetailwindcssビューfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とは注文管理アプリローコードCase式マルチテナントアクセス制限nest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築サイトマップAngularHTTP Requestドロップダウンメニューノーコード入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate KeyサブグリッドAccessCSSBreakpointObserver承認動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キー業務アプリ開発InfoPathxUnitメディアクエリリマインドcollectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェックDataverse テーブルMatTable.Net Core 3.1スマホSetコレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDAngular MaterialVSCodePCForAll複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キーデータ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キーモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップform差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Power AppsTypeScriptitem関数入門技術エクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計Power PlatformHTMLGoogle Maps初心者Itインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキーSharePointEF CoreMarker Clusterer中級者DXカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約ExcelマイグレーションRANK()関数キャンバスアプリノウハウcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムMicrosoft DataversePower AutomateFramework CoreDynamics 365 SalesDatePicker情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いフォーム設定C#Attribute directivesMicrosoft TranslatorDropdownメッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入ビュー設定
PageTop
ページトップに戻る