Power Automate × Officeスクリプトで電子取引データの索引簿をつくってみた
こんにちは。aliceです。
2022年1月1日から電子帳簿保存法が改正されますね。
(注:そんなに理解していない)
↓国税庁電子帳簿保存法一問一答【電子取引関係】
(内容については省略…。)
私の職場はタイムスタンプって何ですか?という職場なので規程とファイル名で対応するのかなと思っているのですが、せっかくだからExcelの検索簿もほしい。ただいちいち作るのも・作ってもらうのも面倒なのでPower AutomateとOfficeスクリプトを使って検索簿を作ってみました。
はい。半分遊びです。いや、ほとんど遊びです。
Share Pointにファイルを入れたら
月に1回、索引簿を作成するというフローです。
無駄にリンク機能を入れました。
ポチっとするとPDFが表示されます。
ということで、かなり雑にフローを書いていきます。
びぼうろく~♪
1 Share Pointの設定
まずはShare Pointに次の設定をします。
Share Pointのドキュメントに「電子取引データ」をいうフォルダーを作ります。
その中に「見積書」と「請求書」というフォルダーを作ります。
本当は注文書とか領収書も入るのかな?今回はテストなので2つ作りました。
「電子取引データ一覧表」というExcelは先程のExcelです。
請求書フォルダーを開くとファイルが入っています。
ファイル名は「取引日_取引先_金額」の順に名前を付けています。
国税庁の一問一答のままです。
ここで新しく列を追加します。
「一覧表登録」と「一覧表登録日」という列です。
ここはPower Automateで使用します。
「一覧表登録」が「済」になっていなかったらというフローで使います。
「一覧表登録」は1行テキスト、「一覧表登録日」は日付と時刻で作りました。
一覧表登録
一覧表登録日
これでShare Pointの設定は終了です。
次はExcelに登録用のテーブルを作ります。
2 Excelの設定
Excelをweb版で開きます。Officeスクリプトを使うのでweb版で開きましょう。
Excelを開いてSheet1に一覧というテーブルを作ります。それぞれ
A列:日付、B列:取引先、C列:金額、D列:区分、E列:Linkにしました。
テーブルを作成したので、次はOfficeスクリプトを追加します。
3 Officeスクリプトの設定
そのままOfficeスクリプトを追加します。
コードはこちらです。
function main(
workbook: ExcelScript.Workbook,
folderName: string,
fileName: string,
filePath: string) {
const fileAry: string[] = fileName.split("_");
const folderAry: string[] = folderName.split("/");
const dt = (fileAry[0].substr(0, 4) + '/' + fileAry[0].substr(4, 2) + '/' + fileAry[0].substr(6, 2));
const sheet = workbook.getWorksheet("Sheet1");
const table = sheet.getTable("一覧")
const lastRow: number = table.getRowCount();
table.addRow(-1, [dt, fileAry[1], fileAry[2], folderAry[2], ""]);
const rg = sheet.getCell(lastRow + 1, 4).setHyperlink({ address: filePath, textToDisplay: "Link" });
}
自動化タブの新しいスクリプトからスクリプトを追加します。
名前は「電子取引データ登録」にします。
power Automateからもらったデータを加工してテーブルに登録します。
もうちょっと良い書き方があると思うけど、動いたからまぁいいか。
最後にPower Automateを設定します。
【追記】もう少し細かく書きました。
① OfficeスクリプトでPower Automateから値をもらおう!
4 Power Automateの設定
Power Automateでフローを作ります。
フローの全体像はこちらです。Officeスクリプトを使っているのでかなりあっさりしています。
まずはスケジュール。1か月に1回にしました。
ファイルを追加する都度でなくて良いかな?と思ったのでスケジュール実行しています。
Share Pointに入れたファイルのプロパティを取得します。
取得したファイルについて処理をします。
Apply to eachアクションの中に条件アクションを入れます。
条件は次の3つです。
* 名前に「電子取引データ一覧表」を含まない
* フォルダーでない
* Share Pointの一覧表登録が済になっていない
条件に一致するときは次の処理をします。
folderNameにフォルダーのパス、fileNameに名前、filePathにアイテムへのリンクを入れます。
最後にShare Pointのプロパティを更新します。
一覧表登録に「済」、一覧表登録日に登録日を入れます。
関数はこんな感じ
はい。できました!
だいぶ雑でしたね。もうちょっとちゃんと書こう。
この記事が気に入ったらサポートをしてみませんか?