(Excel Online)Office Scriptsでテーブル操作色々

Office ScriptsでのExcelテーブル操作覚え書き

TypeScriptベースのOffice Script使うと、Power AutomateからバックグラウンドでExcelテーブルを操作して、データを取得することができます。

コードを使ったフローの例はこちら
PowerAutomate でExcel表をメール本文に貼り付けて送付する方法2つ - M365お勉強ブログ(仮)

テーブルオブジェクトの取得

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();