PowerApps│Excel参照でまとめてバケットとタスクを登録する方法

PowerApps│Excel参照でまとめてバケットとタスクを登録する方法

自称Planner親善大使のあんこ先生です。

タスク管理はもちろん、ToDoや集計してインセンティブにも使えるPlannerは便利ですよね。

どんどん使っていきたいところですが、ひとつ厄介な問題があります。

Plannerのタスク登録、ひとつずつポチポチ作るのめんどくさいですよね。

標準機能でエクスポートはできますが、なぜかインポートはできないんです。

なければ作っちゃえばいいんです。

そこで、Excelで入力したタスクリストをPlannerにまとめて登録するするアプリの作り方をコード付きで紹介します。

これを使えばユーザーごとに同じタスクを個別に割り当てられたり、提携タスクをまとめて登録できますよ。

これでPlannerの職場普及も捗りますね!

Excel参照でまとめてバケットとタスクを登録する方法


作成するアプリの概要

Excelのテーブルから登録したいバケットとタスク情報を取得する。

アプリで自身が参加しているプラン一覧から登録先を選択する。

バケットが存在するか確認し、なければ作成する。

タスクを無条件で登録する。

別途、タスク登録済み確認ステップを追加すれば重複は回避できるよ。


事前準備

入力原票となるExcelでテーブルを作成します。

項目は次の5つです。(コピペできるよ)

タスク名バケット名開始日期限日アサインユーザー
マイナンバーカードの申請カード取得2023/1/12023/1/15anko7793@anko7793.onmicrosoft.com
交付通知書が届くカード取得2023/1/162023/1/20anko7793@anko7793.onmicrosoft.com
交付場所で受け取るカード取得2023/1/212023/1/31anko7793@anko7793.onmicrosoft.com
マイナンバーカードの新規取得等マイナポイント2023/2/12023/2/28anko7793@anko7793.onmicrosoft.com
健康保険証としての利用申込みマイナポイント2023/2/12023/2/28anko7793@anko7793.onmicrosoft.com
公金受取口座の登録マイナポイント2023/2/12023/2/28anko7793@anko7793.onmicrosoft.com

バケットは名前で判定させるため、バケットIDは不要です。

複数ユーザーをアサインする場合は、 ; (セミコロン)で区切ります。

ユーザーやプランごとに参照元を切り替える場合は、それぞれ個別にテーブルを作成しておきます。

作成したExcelファイルは、OneDriveSharePointに保存してください

アプリの作成│Plannerプラン一覧


Plannerコネクタの接続

アプリとPlannerでやりとりできるよう、コネクタを接続します。

ポチるだけで接続は完了です。


プラン一覧を表示させる

自分が参加しているプラン一覧をギャラリーに表示させます。

やり方はとてもかんたん、次のコードをコピペするだけです。

//Gallery.Items
Planner.ListMyPlansV2().value

あとはテンプレートにラベルをひとつ設置してプラン名を表示します。

//Label.Text
ThisItem.title

どれを選択しているかわからないので背景色も変えておきます。

//Gallery.TemplateFill
If(ThisItem.IsSelected, RGBA(255, 0, 0, 0.5), RGBA(0, 0, 0, 0))

これでプラン一覧が表示され、選択したものは背景色が変わるようになりました。

アプリの作成│バケットとタスクの登録


Excelコネクタの接続

今度はアプリとExcelでやりとりできるよう、コネクタを接続します。

保存場所に関係なくExcel Onlineコネクタを選んでください。

あとはExcelファイルを探し当てて、テーブルまで指定します。

テーブルが複数ある場合は、その数だけこの接続を繰り返してください。

識別子をどうするか聞いてきますが、今回は主キーは持たせていないため自動生成させます。

これで接続は完了です。


バケットの自動登録│Planner_Bucket

理解が進むようバケットとタスクを別々に登録します。

実際に運用するときは分ける必要もないのでまとめた方が便利です。

適当なボタンに、次のコードをコピペします。

//ButtonBucket.OnSelect
Set(glbBucket,
    With({bucket:Planner.ListBucketsV3(Gallery.Selected.id,"").value},
        ForAll(Distinct(InputTable,バケット名),
            If(!(ThisRecord.Result in bucket.name),
                Planner.CreateBucket(ThisRecord.Result,Gallery.Selected.id)
            )
        )
    )
)

一番外側に変数glbBucketがあります。

これは新規に登録したバケットを後述するデータテーブルに表示させるためのものです。

運用時は意識する必要ないので省略できますよ。

あとは上から順に、まずWith関数を使ってギャラリーで選択したプランに含まれるバケット一覧をbucketと名付けします。

次にExcelに入力されたバケット名をDistinct関数で重複排除します。

そしてForAll関数でそのレコード数だけ登録済み判定と登録処理を繰り返していきます。

その結果を可視化するため、データテーブルを使って変数glbBucketを展開します。

//DataTableBucket.Items
Filter(glbBucket,!IsBlank(id))

バケットが登録済みの場合でも空欄レコードが作成されるため、Filter関数で除外しています。

試しに2回実行すると変数glbBucketが空になってデータテーブルには何も表示されないことが確認できますよ。


タスクの一括登録│Planner_Task

今度はタスクを登録していきます。

バケットを作成する前にこちらを実行するとバケットなしに分類されますので注意してください。

適当なボタンに、次のコードをコピペします。

//ButtonTask.OnSelect
Set(glbTask,
    With({bucket:Planner.ListBucketsV3(Gallery.Selected.id,"").value},
        ForAll(InputTable As excel,
            Planner.CreateTaskV4(
                "",Gallery.Selected.id,excel.タスク名,
                {
                    bucketId:LookUp(bucket,name=excel.バケット名,id),
                    startDateTime:DateValue(excel.開始日),
                    dueDateTime:DateValue(excel.期限日),
                    assignments:excel.アサインユーザー
                }
            )
        )
    )
)

こちらも一番外側に変数glbTaskがあります。

これは登録したタスクを後述するデータテーブルに表示させるためのものです。

運用時は意識する必要ないのでバケットの時と同様に省略できますよ。

あとは上から順に、まずWith関数を使ってギャラリーで選択したプランに含まれるバケット一覧をbucketと名付けします。

次にForAll関数Excelに入力されたレコード数だけタスク登録を繰り返していきます。

重複チェックを挟み込めば、未登録のみを対象にできますが沼るかも知れません。

その結果を可視化するため、データテーブルを使って変数glbTaskを展開します。

//DataTableTask.Items
glbTask

試しにタスク100件登録すると70秒で終わりました。

Microsof365のプランや通信環境によりけりですが、手動と比べたら雲泥の差ですよね。

Excel参照でまとめてバケットとタスクを登録する方法のまとめ

今回はExcel参照でまとめてバケットとタスクを登録する方法を紹介しました。

Plannerと連携させる場合、3種類あるIDを調べるのが億劫になりますよね。

今回のやり方であれば、各種IDを意識する必要はまったくありません。

存在しないバケットも自動で登録されるため、エラーや不具合が発生しにくい作りになっています。

アレンジすれば、アプリでアサインしたり、逆にタスクを削除したりといったこともできますよ。

ベースアプリは初心者でも概ね30分あれば完成しますので、お勉強もかねて作ってみましょう!

ご支援よろしくおねがいします

この記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。

下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。

受取人のメールアドレスは amazon@anko7793.com までお願いします。

メッセージもいただけるとたいへん喜びます。

よろしくお願いします。

Amazonギフト券(Eメールタイプ) 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
七草あんこ
非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。主にTwitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。