【概要】PowerAutomateとExcelスクリプトでSPOリストを取得
SharePointリストのデータを取得し、シェアポイントのドキュメントにあるExcel(Online)ファイルのテーブルに流しこみたい。
(できるだけ、早い処理)
他のやり方として、シェアポイントリストのデータを取得してAutomateのExcelコネクタの「表に行を追加」を使う方法もあるけど、処理時間がかかりすぎて使い物になりませんでした。
1.SharePointのリストの用意
シェアポイントのサイトコンテンツに新規でリストを作成してください。
今回のサンプルとしては、
・No.(数値)
・名称(Title:テキスト)
・類別(テキスト)
の3つの列名です。この辺りは任意の列名、列の種類を設定ください。
2.SharePointドキュメントにExcel作成
シェアポイントのドキュメントにExcelファイルを作成。
シート名は「sheet1」
テーブルも作成しておく。
今回だと、例としてテーブル名「table1」
3.Excelにスクリプト記述
function main(workbook: ExcelScript.Workbook,
arrayfromflow: arrayofdata[], sheetName: string,
tableName: string) {
// Automateからシート名を受け取る
let sheet = workbook.getWorksheet(sheetName);
// Automateからテーブル名を受け取る
let existingTable = workbook.getTable(tableName);
//JSON文字列をオブジェクトに変換。
let parsedArray: object[] = (typeof arrayfromflow === "string") ? JSON.parse(arrayfromflow) : arrayfromflow;
// 配列を行データとして成形
let formattedRows = parsedArray.map(item =>
[item["No."], item["名称"], item["類別"]]
);
// 既存のテーブルにデータを追加
existingTable.addRows(0, formattedRows);
}
// データ型(インターフェース)定義
interface arrayofdata {
No: number, // No.(文字列)
Name: string, // 名称(文字列)
Category: string, // 類別(文字列)
}
4.Automateのフロー作成

①[PowerApps]トリガー
Power Apps(V2)
↓↓↓
②[SharePoint]複数の項目の取得
サイトのアドレス:任意のサイトを選択してください。
リスト名:SharePointのリスト名を選択してください。
↓↓↓
③[データ操作]選択
開始:(複数の項目の取得)欄から valueを選択。
マップ:出力したい項目に応じて設定・紐づけしてください。
キー:Excel側のテーブルの列名
値:(複数の項目の取得)欄から紐づけたい値を選択。
※注意として、●● Valueってのが時々あります。
それは、シェアポイントリストの列が選択式形式の場合は
●●valueを選んでください。
↓↓↓
④[Excel Online]スクリプトの実行
場所:任意のSharePointのサイトを選択してください。
ドキュメントライブラリ:Excelが保存されてるとこ。自動で表示されるの選択。
ファイル:上記のドキュメントライブラリ以降のFull Pathを記述。
/エクセル名.拡張子
スクリプト:上記を選択すると、選べるようになる。
下記は、スクリプトに渡す引数。
スクリプト側に記述してあれば、上記のスクリプト選択後に入力できます。
arrayfromflow:アレイ全体の入力に切り替えて、
(選択)で取得した出力を選ぶ。
sheetName:Excelの任意のワークシート名を記述。例:sheet1
tableName:Excelの任意のテーブル名を記述。例:table1