\ ポイント最大9倍! /

Power AutomateからExcelファイルにOfficeスクリプトを実行する方法

Power automateからスクリプトを実行する

【当サイトはプロモーションを含んでいます】

目次

はじめに

じょじお

今日は、Web版Excel(Excel Online)のマクロであるOfficeスクリプトをPowerAutomateから実行する方法について、作成しながら解説します。

今回作成するフローのイメージ

作成するPowerAutomateのフロー図

▲図のようなフローを作成します。スクリプトの処理の内容としては、Excelファイルをテーブル化してテーブル内のデータ件数を返す処理です。

手順の概要

じょじお

下記の手順で作業します。

作業手順

  • Officeスクリプト作成
  • Power Automateフローの作成

(Step1)Officeスクリプト(Office Scripts)の作成方法

STEP
テストExcelデータを用意します。
テスト用Excelファイルの中身プログラム実行前

▲図のようなテストデータを用意しました。表形式のデータです。

STEP
Officeスクリプトを新規作成します。
Excelの自動化タブの場所

▲Officeスクリプトを書いていきます。Excelのタブ内にある「自動化」タブをクリックします。

Officeスクリプトの新規作成方法1

▲すべてのスクリプトをクリックします。

Officeスクリプトの新規作成方法2

▲「新しいスクリプト」をクリックします。

Officeスクリプトを記述するところの説明

▲Officeスクリプトが新規作成されました。下図赤枠のところに処理を記述していきます。

STEP

Officeスクリプト(Office Scripts)のコード

function main(workbook: ExcelScript.Workbook)
{
//対象をブック内のシート1枚目にする。
let st = workbook.getWorksheets()[0];

//データ範囲を特定する。
let myUsedRng = st.getUsedRange();

//テーブル化して変数に入れる。
let myTable = st.addTable(myUsedRng, true);

//テーブルのヘッダーを抜かしたデータ部分の行数を戻り値として返す。
return myTable.getRangeBetweenHeaderAndTotal().getRowCount();

}

▲STEP2の図の赤枠のところに上記コードを記述します。テーブル化する範囲を自動で特定するために、getUsedRange()メソッドを使いました。

事項からPowerAutomateでフローを作っていきます。このあとフローが完成したらまたテストを行うので適用されたテーブルは一旦解除しておいてくださいね。

解除方法:「テーブル範囲に含まれるセルを選択→「テーブルデザイン」タブをクリック→「範囲に変換」をクリック」

じょじお

VBAのUsedRange()プロパティに似ていますね(‘ω’)
コードで使用したメソッドについては後程解説します。
まずは体感してほしいので実行してみますね。

STEP

Officeスクリプトのテスト

Officeスクリプト完成図

▲コードを入力したら「スクリプトを保存」をクリックして保存し、「実行」をクリックしてテスト実行してみます。

プログラム実行後

▲実行すると図のようにテーブルスタイルが適用され見た目も変化します。テーブル化されたされたことがわかるかと思います。

じょじお

これでスクリプトの実行はおわりです。次の項からコードの解説をします。

使用したOfficeスクリプト(Office Scripts)のメソッドの説明

操作するシートを指定する。

//ブック内のシート全部指定。
let st = workbook.getWorksheets();

//ブック内のシート1枚目を指定。
//getWorksheets()でブック内のすべてのシートが配列に取得されるので、
//インデックス番号の開始値である[0]を指定してシートの1枚目を指定しています。
let st = workbook.getWorksheets()[0];

//ブック内のシート1枚を名前を使って指定。
let st = workbook.getWorksheet(”シート1”);

▲シートを指定するのに下記のいずれかのメソッドを使用します。

シート内の使用されているセル範囲を指定する。

//データ範囲を特定する。
let myUsedRng = st.getUsedRange();

▲テーブル化するために、シート内の使用されているセル範囲を指定します。

getUsedRange()メソッドはセルの値が空っぽでも、罫線が余分に引かれているとその部分のセルまで取得してしまうので注意してください。

指定したセル範囲をテーブル化する。

//基本構文
addTable(”テーブル化するセル範囲”, ”1行目をHeaderとして扱う場合はtrue、扱わない場合はfalse”);

//テーブル化して変数に入れる。
let myTable = st.addTable(myUsedRng, true);

▲テーブル化するためにaddTable()メソッドを使います。

戻り値を返す。

//returnキーワードを使って戻り値を返します。
//返す値はヘッダー行を抜かしたテーブルの行数、つまりデータ数です。
return myTable.getRangeBetweenHeaderAndTotal().getRowCount();

returnキーワードを使ってPowerAutomateに戻り値を返します。

function main(workbook: ExcelScript.Workbook){}って何?

Office Scriptでは必ず必要になるおまじないです。

(Step2) Power Automateフローの作成

STEP
Power Automateのコンソール画面を開きます。

Power Automateのコンソール画面(こちらのページ)を開きます。

STEP
インスタントクラウドフローを作成します。
PowerAutomateフロー新規作成方法1

▲Power Automateのコンソール画面を開いたら、「作成」→「インスタントクラウドフロー」をクリックします。

Power Automateフローの作成方法2

▲お好きなフロー名を入力し、「手動でフローをトリガーします。」を選択し「作成」をクリックします。

STEP

スクリプトの実行アクションを追加します。

Power Automateフローの作成方法4

▲新しいステップをクリックします。

Power Automateフローの作成方法3

▲「Excel Online」を選択します。

Power Automateフローの作成方法3

▲スクリプトの実行をクリックします。

PowerAutomateフローでofficeスクリプトを実行する

▲各パラメータを設定します。

  • 場所: Excelファイルが保存されたSharepointサイト、あるいはグループを選択します。
  • ドキュメントライブラリ: Excelファイルが保存されたライブラリを選択します。
  • ファイル: Excelファイルを選択します。
  • スクリプト: officeスクリプトファイルを選択します。
じょじお

以上でPower Automateのフロー作成が完了です。

STEP

PowerAutomateフローをテスト実行します。

PowerAutomateフローのテスト方法

▲テスト実行して動作を確認してみます。 フローを保存しましたら、Power Automateの画面右上のテストをクリックします。

Power Automateのテスト方法2

▲手動を選択してテストをクリックします。

Power Automateテスト方法3

▲フローの実行をクリックします。

Power Automateフローの実行画面
STEP
実行結果ログを確認します。
PowerAutomateフローの実行結果

▲実行結果を見てみます。

「出力」のところにある”result”が戻り値です。データ件数である「7」が正しく取得出来ました!

Office Scriptを学ぶ

Office ScriptによるExcel on the web 開発入門

『Office ScriptによるExcel on the web 開発入門』
  • オススメ度:★★★★★
  • Kindle版:あり
  • 対象者:Office Scriptをこれから習得したい方
  • Office Scriptを体系的に学ぶならおススメ!
デザインも良く読みやすいのでおススメです。

Office Scriptを体系的に学ぶにはこちらの書籍の購入をおススメします。現時点ではAmazonで購入できる唯一の日本語で書かれたOfficeスクリプト(Office Script)の書籍です。(2021年11月05日時点)そもそもOffice Scriptを解説している日本語のWebサイトやYouTubeは多くありませんので貴重な解説書です。

Office Scriptのベース言語であるTypeScriptの解説から始まるのでプログラム経験のない方でもこの1冊でOffice Scriptを始めることができるかと思います。セルやシートの操作方法はもちろん、Office Scriptの一番のメリットであるPower Automateとの連携の方法(変数の受け渡し等)も解説されていて一通り網羅されているかと思います。Kindleで読んでも文字サイズやレイアウトがキレイで読みやすいのもありがたかったです。

Office scriptsを習得すればExcelデータが多い会社や組織では自動化の可能性が広がります。Excel VBAではできなかったクラウド連携やトリガー起動による自動化をぜひ体感してください。

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。

Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

まとめ

じょじお

PowerAutomateフローからofficeスクリプトを実行し戻り値を取得することが出来ました。

じょじお

今回作成したスクリプトはExcelファイルに保存されるわけではなく、スクリプトファイルとして別に保存されます。つまり他のExcelファイルでもコピペすることなくそのまま使用可能です。

ぽこがみさま

VBAではブックにプログラムコードが保存されるので、他のブックでプログラムを使用する場合にはコピペするなどの対応が必要でした。この点はVBAより便利だにゃ

じょじお

次の記事では受信メールに添付されたExcelファイルをofficeスクリプトを使って分析や加工を試してみたいと思います(*’ω’*)

お役に立てたらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次