自称Planner親善大使のあんこ先生です。
タスク管理はもちろん、ToDoや集計してインセンティブにも使えるPlannerは便利ですよね。
どんどん使っていきたいところですが、ひとつ厄介な問題があります。
Plannerのタスク登録、ひとつずつポチポチ作るのめんどくさいですよね。
標準機能でエクスポートはできますが、なぜかインポートはできないんです。
なければ作っちゃえばいいんです。
そこで、Excelで入力したタスクリストをPlannerにまとめて登録するするアプリの作り方をコード付きで紹介します。
これを使えばユーザーごとに同じタスクを個別に割り当てられたり、提携タスクをまとめて登録できますよ。
これでPlannerの職場普及も捗りますね!
Contents
Excel参照でまとめてバケットとタスクを登録する方法
作成するアプリの概要
Excelのテーブルから登録したいバケットとタスク情報を取得する。
アプリで自身が参加しているプラン一覧から登録先を選択する。
バケットが存在するか確認し、なければ作成する。
タスクを無条件で登録する。
事前準備
入力原票となるExcelでテーブルを作成します。
項目は次の5つです。(コピペできるよ)
タスク名 | バケット名 | 開始日 | 期限日 | アサインユーザー |
---|---|---|---|---|
マイナンバーカードの申請 | カード取得 | 2023/1/1 | 2023/1/15 | anko7793@anko7793.onmicrosoft.com |
交付通知書が届く | カード取得 | 2023/1/16 | 2023/1/20 | anko7793@anko7793.onmicrosoft.com |
交付場所で受け取る | カード取得 | 2023/1/21 | 2023/1/31 | anko7793@anko7793.onmicrosoft.com |
マイナンバーカードの新規取得等 | マイナポイント | 2023/2/1 | 2023/2/28 | anko7793@anko7793.onmicrosoft.com |
健康保険証としての利用申込み | マイナポイント | 2023/2/1 | 2023/2/28 | anko7793@anko7793.onmicrosoft.com |
公金受取口座の登録 | マイナポイント | 2023/2/1 | 2023/2/28 | anko7793@anko7793.onmicrosoft.com |
バケットは名前で判定させるため、バケットIDは不要です。
複数ユーザーをアサインする場合は、 ; (セミコロン)で区切ります。
ユーザーやプランごとに参照元を切り替える場合は、それぞれ個別にテーブルを作成しておきます。
作成したExcelファイルは、OneDriveかSharePointに保存してください
アプリの作成│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分あれば完成しますので、お勉強もかねて作ってみましょう!
別途、タスク登録済み確認ステップを追加すれば重複は回避できるよ。