OfficeスクリプトとPower AutomateでExcel方眼紙から読み取り、保存(その1)

元ソース

こんなツイートを見かけた。

なるほど!
Excel方眼紙も、自動化できれば活用できる!
良い発想だ、そう思ったので、早速試してみる。
ただ、同じことをやってもつまらないので、少しだけアレンジすることに挑戦。

Microsoft一次情報

参考情報。

チュートリアル: スプレッドシート データに基づいて毎週のメール リマインダーを送信する - Office ScriptsPower Automate を使用して Office Scripts for Excel を実行してリマインダー メールを送信する方法を示すチュートリアル。
チュートリアル: スプレッドシート データに基づいて毎週のメール リマインダーを送信する - Office Scripts docs.microsoft.com
チュートリアル: スプレッドシート データに基づいて毎週のメール リマインダーを送信する - Office Scripts

Microsoft365のエクセル(オンライン版)

こちらからエクセルを立ち上げる。
現在、デスクトップ版のエクセルでは、Officeスクリプトの実行はできるが、作成はできない。

自動化の流れ

大きな流れとして、「Officeスクリプト」で行う自動化と、「Power Automate」で行う自動化がある。

Officeスクリプト

Excelオンラインの「自動化」タブ、「Officeスクリプト」を使い、Excel方眼紙の中から必要項目を抜き出す。今回は、目的、責任者氏名、メールアドレスの3項目が対象。

3つの項目を読みだす「Officeスクリプト」のコードは次のとおり。

このコードはツイート主であるOta Hirofumiさんのそれを拝借した。感謝。
1行目は決まり文句。
2行目~4行目は、基本的な内容は同じなので、コピペして必要な部分だけ修正すると良い。
6行目~10行目と15行目~19行目も同様。
コピペを上手に活用すると、コード入力の手間も減る。
マクロで記録して修正するのも良いと思う。

テーブルを用意

ここからアレンジ。読み込んだデータを貯めるためのテーブル「Data_Save」を用意しておく。
ここに、データ更新がある都度、ため込む仕組み。

列ごとのデータであれば、色々活用が利く。
Power Queryを使えば、簡単にデータをマージできもするし、Power Pivot for Excelを使えば、責任者氏名ごとの件数などを把握することなどもできる。

「きれいなデータ」があれば、「新たな洞察」に繋げられる。
データ活用のポイントは、それぞれのツールの特性を踏まえることにある。

Power Automate

Power Automateで自動化する。大まかな流れは、次の3つのステップ。

手動でフローをトリガーします

一つ目「手動でフローをトリガーします」は、Power Automateのフロー作成画面で「インスタントクラウドフロー」を選択。

次の画面で「手動でフローをトリガーします」の左に✔、「作成」。

こんな画面が出る。

ここにステップをつなぐ。「新しいステップ」をクリック。

スクリプトの実行

2つ目のステップ「スクリプトの実行」は次のとおり。

表に行を追加

3つ目のステップ「表に行を追加」は次のとおり。ポイントは、Officeスクリプトで作成した定義(purposeなど)をここで使う。


注意点が一つある。この「表に行を追加」は2種類用意されている、適宜選択。今回は次のとおり。

以上で自動化プロセスの作成は完了。あとはテストを実施して、問題がなければ実行。

実行

早速、実行。1件、5秒。起動するまでに少し時間がかかるが、期待通り。

OfficeスクリプトとPower Automateのコンボ。
すごい可能性を感じる!
自動化の大きな流れになるのは、間違いない。

■■■■■

「正しいモダンExcel」の使い方の基本を学ぶには、Power Query(パワークエリ)とPower Pivot for Excel(パワーピボット)の両者を「一体理解」する必要があります。
ぜひ、拙著「モダンExcel入門」(日経BP)で学んでみて欲しいと思います。
サンプルデータで、実際に手を動かしながら、理解を深めることもできます。参考にしてください。

■■■■■

「モダンExcel研究所」を楽しむ際の【注意事項】

コンテンツコピー、スクレイピングなど【厳禁】 ☚【検知ツール設置済】☚悪質な場合【法的措置】を講じます

(過負荷によるサーバー障害が生じた経験上、ご協力お願いいたします!)

モダンExcel研究所

フォローお待ちしてます!

error: Content is protected !!