1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

最終更新日

初心者必見!Power AutomateとOfficeスクリプトでExcelの申請書チェックフローを作ってみた①

  • このエントリーをはてなブックマークに追加

はじめに

今回は、OfficeスクリプトとPower Automateを活用して、Excelファイルの入力チェックを自動化するフローを作成してみました。
具体的には、SharePoint OnlineにアップロードしたExcelファイルに対して、
Power Automateのクラウドフローを実行することで、Officeスクリプトが実行され、Excel内のデータチェックを自動で行います。
これにより、入力ミスの検出やデータ整合性の確認が簡単にできるようになります。
本記事では、Officeスクリプトとクラウドフローの作成手順と活用方法について詳しくご紹介します。

1.Officeスクリプトとは

通常、Excelでの操作を自動化する場合は、VBAという言語で開発します。
しかし、Web版のExcelでは、このVBAを扱うことができません。
そこで、Web版のExcelを自動化する目的として登場した言語がOfficeスクリプトになります。

2.全体の流れ


全体の流れは以下になります。

① 申請書を所定のSharePoint Onlineへ配置した後、Power Automateフローを実行
② SharePoint OnlineにあるExcel申請書のOfficeスクリプトを実行
  実行結果をPower Automateへ返す
③ ②でOfficeスクリプトから返ってきた結果をSharePoint Onlineフォルダへログファイルとして出力

実際に申請書の入力値チェックをするのはOfficeスクリプトで、Power Automateはその結果をログファイルとして出力するような流れです。

 

3.Officeスクリプトの作成

Power Automateのクラウドフローを作成する前に、
Officeスクリプトを作成していきます。

まずは申請書.xlsxを、SharePoint Onlineへアップします。


申請書.xlsxの内容は、簡単な項目を記載したテスト用のデータを入れました。


SharePoint Onlineへアップした申請書.xlsxを開き、自動化タブから「新しいスクリプト」をクリックします。


すると左側にコードエディターが出てきます。
デフォルトのスクリプトが入っていますが、こちらを書き換えていきます。


書き換えた内容は以下です。
このスクリプトは、名前であれば半角英字になっているか、
メールアドレスは@xxx.xxxのようにメールアドレス形式になっているか、などをチェックし、
チェックでエラーになったセルを黄色に塗りつぶすという処理になっています。

今回はPower AutomateからこのOfficeスクリプトを実行し、実行結果(エラー行があればその内容)をPower Automate側へ返す予定です。
そのため、入力値にエラーがあった場合はその内容をresultに入れてPower Automate側へ渡すようにしています。

function main(workbook: ExcelScript.Workbook): string {
  const sheet1 = workbook.getWorksheet("Sheet1");
  const sheet1Values = sheet1.getUsedRange().getValues();

  let result: string = "";

  // 正規表現の定義
  const regexpId = /^[0-9]{1,4}$/; // 1~4桁の数字にのみマッチ
  const regexpName = /^[a-zA-Z]+$/; // 半角英字にのみマッチ
  const regexpGroupName = /^[0-9a-zA-Z]*$/; // 半角英数字にのみマッチ
  const regexpMailAddress = /^[a-zA-Z0-9_.+-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/; // メールアドレスの正規表現

  sheet1Values.forEach((row, rowIndex) => {
    if (rowIndex !== 0) { // ヘッダー行をスキップ
      row.forEach((cell, colIndex) => {
        const strCell = cell.toString();

        // ID列
        if (colIndex === 0 && !regexpId.test(strCell)) {
          sheet1.getCell(rowIndex, colIndex).getFormat().getFill().setColor("FFFF00");
          result += `${rowIndex}行目のIDが不正です。 [${strCell}]\r\n`;
        }

        // 名前(姓)
        if (colIndex === 1 && !regexpName.test(strCell)) {
          sheet1.getCell(rowIndex, colIndex).getFormat().getFill().setColor("FFFF00");
          result += `${rowIndex}行目の名前(姓)が不正です。 [${strCell}]\r\n`;
        }

        // 名前(名)
        if (colIndex === 2 && !regexpName.test(strCell)) {
          sheet1.getCell(rowIndex, colIndex).getFormat().getFill().setColor("FFFF00");
          result += `${rowIndex}行目の名前(名)が不正です。 [${strCell}]\r\n`;
        }

        // メールアドレス
        if (colIndex === 3 && !regexpMailAddress.test(strCell)) {
          sheet1.getCell(rowIndex, colIndex).getFormat().getFill().setColor("FFFF00");
          result += `${rowIndex}行目のメールアドレスが不正です。 [${strCell}]\r\n`;
        }

        // 所属グループ
        if (colIndex === 4 && !regexpGroupName.test(strCell)) {
          sheet1.getCell(rowIndex, colIndex).getFormat().getFill().setColor("FFFF00");
          result += `${rowIndex}行目のグループ名が不正です。 [${strCell}]\r\n`;
        }
      });
    }
  });
  return result;
}

 

スクリプトが書けたら、スクリプト名を適宜変更し、スクリプトを保存します。


これでOfficeスクリプトの作成は完了です。
早速スクリプトを実行してみましょう。コードエディターの「実行」をクリックします。


すると、申請書の入力値チェックでエラーになった項目のセルの色が変わりました!
スクリプトはきちんと動いているみたいです。


おわりに

今回は、Power Automateで実行するためのOfficeスクリプトを作成しました。
次回は、このOfficeスクリプトをPower Automate側で実行し、その結果を出力するクラウドフローを作成する予定です!

弊社の Power Platform サポート&アプリカタログサービス では、キャンバスアプリやクラウドフローの実装に対する技術サポートから、ガバナンス管理・ガイドライン策定のご支援までを含めた、幅広いメニューをご提供しています。
また、「AIチャットボット構築サービス」をはじめとして、各AIサービスを利用したシステム導入のお手伝いをしております。それ以外でも QESでは様々なアプリケーションの開発・導入を行っております。提供するサービス・ソリューションにつきましては こちら に掲載しております。
まずはお気軽にお問い合わせください。

※このブログで参照されている、Microsoft、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード