やりたいこと
- SharePointのドキュメント上にテンプレートとなるExcelがある。
- テンプレートのExcelにはテーブルが存在する(テーブル名=テーブル1)。
- そのExcelをコピーして新規作成する。
- コピー先のExcelのテーブルに行を追加する。
- 以上をPowerAutomateで行う。
やり方
テンプレートとなるExcelの準備
今回はShared Documents/20200626というフォルダ配下に「test-template.xlsx」という名称のExcelを作成しました。
test-template.xlsxには下図の列を持った「テーブル1」というテーブルを持っています。
Excel Onlineでテーブルを作成すると自動的にこの名称になります。ただ、Excelアプリで表示しないとテーブル名が分からない。
このExcelを適当な場所にコピーして行を追加します。
PowerAutomate
ファイルのコピー
SharePointの「ファイルのコピー」アクションを設定します。
「Shared Documents/20200626」に「コピー先」というフォルダを作成して、ここをコピー先のフォルダとしました。
行を追加?
次にExcelの「表に行を追加」アクションで行を追加したいところですが、表に行を追加アクションだと行を追加するExcelは固定である必要があります。今回は可変なのでひと工夫必要です。
ブックIDを取得する
拙著のPowerAutomateを使ってSharePoint上のExcelのテーブルを取得するを参照してブックIDを取得します。紹介したページではThumbnailの値が必要ですが、上記のファイルのコピーアクションではThumbnailは返却されないので、「ファイルのプロパティを取得」アクションを使って取得します。
IDに設定しているのは、ファイルのコピーの戻り値の「ItemId」です。これを実行するとThumbnailが返却されるので、上記ページを参照してブックIDを取得します。
表に行を追加
Excelのテーブルに行を追加するには「表に行を追加」アクションを使用しますが、
表に行を追加アクションは、行を追加するExcelは固定されている前提です。なので、上図だとテーブルの列が表示されています。
ただ今回の場合はExcelは可変なので、列名は表示されず下図のようになってしまいます。パラメータ「テーブル」はカスタム値として設定しています。
パラメータ「item」にはJSON形式で設定することができるので、以下のように設定します。
これで行を追加できます。これと同じようにして行の更新も以下のようにしてできます。
パラメータ「キー列」にはキーとなる列名をカスタム値として入力します。SQLで言うとことろのPrimaryKeyとなる列名に相当しますかね。パラメータ「キー値」は、そのPrimaryKey値の値になる部分です。パラメータ「item」に変更する列名と値をJSON形式で設定します。
まとめ
やっぱりブックID取得部分がスマートではないのでなんとかしたい。