• SIS Lab
  • >
  • Blog
  • >
  • Power AutomateでSharePointドキュメントライブラリのフォルダ・ファイル一覧を生成する

Power AutomateでSharePointドキュメントライブラリのフォルダ・ファイル一覧を生成する

更新日:2023.05.05 作成日:2021.09.19

Microsoft TeamsFilesタブを利用していると、いつの間にかファイルがルート直下に増えてしまい、あとから見返したとき、どこに何のファイルがあるかわからなくなる課題がありました。

まずは、整理のため任意のタイミングでフォルダ・ファイル一覧を生成したいと思い、そのためのフローを作成しました。

完成版

Power AutomateのFlow

Flow

  • 手動トリガーで実行後、Get files (properties only)でSharePointドキュメントライブラリのプロパティ一覧を取得
  • Selectでプロパティ一覧から必要な項目のみ抽出
  • Run scriptで、抽出結果を受け取り、Excelファイルに書き出し

フォルダ・ファイル一覧

フォルダ・ファイル一覧

  • Office Scriptを利用し、Path, FileName, Linkの簡素なフォルダ・ファイル一覧を作成

Office Script

function main(workbook: ExcelScript.Workbook, records: File[]) {

  // 削除処理
  let table = workbook.getTable("テーブル1");
  let rowCount = workbook.getTable("テーブル1").getRowCount();
  table.deleteRowsAt(0, rowCount);

  // Power Automateから受け取ったファイル一覧をもとに追加
  let selectedSheet = workbook.getActiveWorksheet();
  let rownum = 1;
  for (let record of records) {
    if (record.IsFolder) {
      selectedSheet.getCell(rownum, 0).setValue(record.FullPath);
    } else {
      selectedSheet.getCell(rownum, 0).setValue(record.Path);
      selectedSheet.getCell(rownum, 1).setValue(record.File);
    }
    selectedSheet.getCell(rownum, 2).setFormula('=HYPERLINK("' + record.Link + '", "Link")');
    rownum++;
  }
}

interface File {
  "Path": string,
  "File": string,
  "FullPath": string,
  "Link": string,
  "IsFolder": boolean
}
  • main関数にrecordsなどの引数を追加することで、Power Automate側からデータを受け取れる
  • interfaceで型を定義できる

Power AutomateのFlow作成での学び

Get files (properties only)を利用することで、SharePointドキュメントライブラリの一覧を取得できるのは当たりが付いていました。しかし、その後、Power Automateでの変数操作、配列操作に不慣れで試行錯誤のため時間を費やしました。

Power Automateでやりたいことを実現するためには、余計なところで時間が取られないように素振りが必要ですね。 ハマりどころは、以下の記事を読んで理解しました。

Related contents