31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Platform で請求書作成処理を効率化しよう

Last updated at Posted at 2023-03-01

はじめに

Power Platform を利用して業務効率化をしたいものの、例えば、最終的には以下のような Excel などのファイルを作成する必要がある場合など、いきなり全ての業務を最適化することは難しいと感じる方もいると思います。

image.png

もちろん、所有しているライセンス含め、いきなり全ての業務を最適化することは難しい場合はございますが、今回は、上記のようなファイルをテンプレート化して、ファイルの生成を自動化する例を紹介します。

処理のイメージは以下のような感じです。

image.png

Excel ファイルの用意

まず、上記 Excel ファイル内の表について、以下のようにテーブル化します。
また、"会社名" の箇所のように、情報を入力する場所のセルの場所を控えておきます。

image.png
image.png

テーブル化する方法については以下の記事などを参考になさってください。

データソースの用意

今回は、SharePoint リストにしておきます。

社外からの注文に対してデータを保存してその後 Power Automate で処理するという意味ですと、Power Pages (データソースは Dataverse) にしてもいいかもです。

image.png
image.png

Power Apps アプリの作成

今回は、サクッと Power Apps で以下のようなアプリを作成して利用します。

image.png

以下の箇所から SharePoint リストを指定し、サクッと作成しています。

image.png

Power Automate クラウドフローの作成 with Office スクリプト

ここからがメインの処理の部分です。
まず、全体の流れは以下のような感じです。

image.png

先に実行結果をお見せすると、以下のように、リストの該当業の添付ファイルに請求書ファイルが作成されます。

image.png
image.png

Excel のセルに情報を入力 (Office スクリプト)

以下の 2 箇所では Office スクリプトを実行しています。

image.png

こちらは、自動化タブより追加することで、Power Automate から実行できます。

image.png

今回、テンプレートファイルを OneDrive において置き、一旦中身をクリアにしてからデータを追加し、SharePoint リストの該当行の添付ファイルとして保存するため、先に以下のスクリプトを実行しています。

function main(workbook: ExcelScript.Workbook) {
  // Get the worksheet with tables.
  let sheet = workbook.getWorksheet("明細書");
  // Get all the tables in the worksheet.
  let table = sheet.getTable("請求書");

  // Get the row count
  let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
  
  if (rowCount > 1) {
    // Delete all the rows
    table.deleteRowsAt(0, rowCount);
  }
}

プログラム経験のない人からするとちょっと難しく感じるかもですが、実は、Bing Chat にほとんど書いてもらいました。本当に優秀です。

image.png
image.png

請求書情報の入力についても、Bing Chat の回答をベースに以下のような処理を書いて Power Automate から引数を渡して実行しています。

image.png

function main(workbook: ExcelScript.Workbook, CompanyName: string, PhoneNumber: string, Email: string, PostalCode: string, Address: string) {
    // ワークシートを取得
    let sheet = workbook.getWorksheet("明細書");

    // セルを取得
    let cellCompanyName = sheet.getRange("B1");
    let cellPhoneNumbe = sheet.getRange("F3");
    let cellEmail = sheet.getRange("F4");
    let cellPostalCode = sheet.getRange("C3");
    let cellAddress = sheet.getRange("C4");

    // セルに値を入力
    cellCompanyName.setValue(CompanyName);
    cellPhoneNumbe.setValue(PhoneNumber);
    cellEmail.setValue(Email);
    cellPostalCode.setValue(PostalCode);
    cellAddress.setValue(Address);
}

image.png

テーブルへの情報の入力

テーブルについては以下のアクションで行を追加しました。
Office スクリプトでも可能ですが、数式の範囲で実現できる利用した方が簡単だと思います。

image.png

その他

最後に、SharePoint リストの該当行 (トリガーで取得した ID 列の情報を利用して) の添付ファイルとして保存します。

image.png

まとめ

今回は、Office スクリプトと Power Automate を組み合わせて Excel の請求書の作成処理を効率化してみる例を紹介しました。

実際はもう少し情報を入力する必要があると思いますが、ファイルのテンプレートがあり、入力項目が決まっている場合は、このようなファイルの作成処理含め、Power Platform で自動化することは可能です。

案件ごとにこのようなファイルを作成する必要があり、手動での情報転記作業等が必要になり一気通貫での自動化が難しかったという場合もあると思います。

そのような業務がある場合は、段階的でもいいので、是非、Power Platform と Office スクリプトを組み合わせて効率化してみることにもチャレンジしてみてもらえたら幸いです。

31
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?