Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Organization

PowerAutomateでSharePoint上のExcelをコピーして表に行を追加する

やりたいこと

  • 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取得部分がスマートではないのでなんとかしたい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?