Office ScriptsでのExcelテーブル操作覚え書き
TypeScriptベースのOffice Script使うと、Power AutomateからバックグラウンドでExcelテーブルを操作して、データを取得することができます。
コードを使ったフローの例はこちら
PowerAutomate でExcel表をメール本文に貼り付けて送付する方法2つ - M365お勉強ブログ(仮)
- Office ScriptsでのExcelテーブル操作覚え書き
- テーブルオブジェクトの取得
- 指定の行でフィルターする
- 指定の列でフィルターする(指定列を非表示)
- テーブルの画像を取得する
- フィルターの解除
テーブルオブジェクトの取得
tableNameにはテキストでテーブル名を設定します。
VBAと違ってシート名の指定は必要ありません。
// テーブルの取得 const table = workbook.getTable(tableName);
指定の行でフィルターする
特定の列の単一値(テキスト)でフィルター
applyValuesFilter(string[])で、配列形式で複数値でフィルター可能です。
複数値でフィルターする場合は配列の要素を追加します。
// フィルターする値 const filterCtx:string[] = ["値1"]; // 列を取得 const column = table.getColumnByName("列名"); // 列にフィルターを適用 column.getFilter().applyValuesFilter(filterCtx);
特定の列の単一値(日付)でフィルター
指定の日でフィルターします。 日付時刻はISO形式で指定し、年や月の単位でフィルターする場合は、ExcelScript.FilterDatetimeSpecificityのenumから選択します。
// 日付のフィルターコンテキストを定義 let filterCtx: ExcelScript.FilterDatetime = { date: '2022-08-31', specificity: ExcelScript.FilterDatetimeSpecificity.day }; // 列を取得 const column = table.getColumnByName("列名"); // フィルターを適用 column.getFilter().applyValuesFilter([filterCtx]);
指定の列でフィルターする(指定列を非表示)
// 非表示にする列名を設定 const columnNames:string[]=["列1","列2"]; // 非表示リスト columnNames.map( (name:string) => table.getColumnByName("列名").getRange().setColumnHidden(true) );
テーブルの画像を取得する
// テーブルの画像を取得 const tableImage = table.getRange().getVisibleView().getRange().getImage();
フィルターの解除
column.getFilter().clear();