問題レポート サンプル アプリでタスク作成の Planner 依存関係を削除する

問題レポート サンプル アプリでは、アプリを共有して広く配布できます。 これを行う場合、Microsoft Teams チームの外部ユーザーが Planner にアクセスできないことがあります。 この場合、ユーザーが問題を送信すると、タスクの作成は失敗します。

このビデオでは、問題報告サンプル アプリでタスク作成に使用するプランナーの依存関係を削除する方法について説明しています:

問題レポートは Planner に大きく依存しており、アプリのユーザーは、アプリがイシューの作成に使用する Planner にアクセスできる必要があります。 Planner は、アプリ内の複数の場所で参照されます。

  1. アプリの OnLoad 中に、アプリは Planner 環境がアプリ設定で設定されているかどうか、およびアプリのユーザーがその Planner 環境にアクセスできるかどうかを確認します。

  2. インサイト画面には、作成および完了したイシューの統計が表示されます。これは Planner から読み取られます。

  3. イシューの作成時に、タスクが Planner で作成され、Planner バケット、カテゴリ、およびプラン ID が Planner から取得されます。

  4. アプリは、バケットが Planner に存在するかどうかを確認し、存在しない場合は作成します。

現在のプロセスの設計

報告された問題に緊急フラグを追加するレッスンで、タスク作成プロセスを置き換えるフローを作成し、それを拡張してタスクの割り当てを自動化しました。 プロセスは現在、Power Automate フローを使用して、Planner でタスクを作成します。

  1. Planner タスクを作成します。

  2. Microsoft Dataverse 問題レポート テーブルに問題レポート レコードを作成します。

  3. アプリに Planner ID を返します。

プロセス全体がインスタント フローとして実行されるため、フローを実行するユーザーは、タスクを作成するためのアクセス許可が必要です。

Planner の依存関係を削除する

したがって、Planner の依存関係を完全に削除して、アプリのユーザーが Planner にアクセスしないようにする場合は、アプリの複数の部分を変更する必要があります。

  1. アプリには、アプリの OnLoad で実行されるタイマー コントロールがあります。 タイマーの終わりに、アプリはユーザーが Planner 環境にアクセスできるかどうかを確認し、アクセスできない場合はエラー画面に移動します。

  2. インサイト画面には、Microsoft Planner から作成およびクローズされた問題のメトリックが表示されます。

  3. 問題の送信ボタンの選択式には、Microsoft Planner への参照が多数あります。

  4. 問題の送信確認には、ユーザーが Microsoft Planner で作成されたタスクを表示するためのボタンがあります。

このレッスンでは、Planner にアクセスするための要件を削除し、Microsoft Dataverse で直接作成されているタスクに置き換えるために必要な手順を実行します。 また、選択したタスク管理システムでタスクを作成するためにプロセスをさらに拡張する方法についても説明します。

Planner へのアクセスのチェックをオフにする

アプリの OnLoad 中に、タイマー コントロールが開始されます。 タイマーの終わりに、アプリはユーザーがアプリの Planner インスタンスにアクセスできるかどうかを確認し、アクセスできない場合は、Planner を構成する必要があることを通知する画面にユーザーを送信します。 Planner にアクセスできないユーザー向けにアプリを変更しているため、将来この機能は削除されます。

  1. Teams の Power Apps で、ツリー ビュー を選択します。

  2. ランディング画面 を展開します。

  3. conLoading_HiddenHelper を展開します。

  4. タイマー コントロール tmrLoadingDelay を選択します。

    ツリー ビューでタイマー コントロールを選択する

  5. OnTimerEnd プロパティを選択し、計算式バーを展開します。

  6. 式を次のように置き換えます。

    Navigate('Insights Screen',ScreenTransition.None)
    
  7. アプリを保存して公開します。

問題送信画面からタスクの表示ボタンを削除する

Planner のタスクは別のアカウントで作成され、問題を送信するユーザーは Microsoft Planner にアクセスできないため、Planner のタスクに移動する送信確認画面のボタンを削除する必要があります。

  1. Teams の Power Apps で、ツリー ビュー を選択します。

  2. 問題送信画面 を選択します。

  3. タスクの表示 ボタンを選択します。

  4. 削除 を選択します。

  5. アプリを保存して公開します。

    問題送信画面は次のようになります。

    問題レポートの確認

インサイト スクリーン Planner タスクのコレクションを更新する

インサイト スクリーンの OnVisible 式は、Planner からタスクを収集して、スクリーンの過去 7 日間セクションにタスクの履歴を表示します。 アプリ ユーザーが Planner にアクセスできない場合、このスクリーンには統計情報は表示されません。

  1. Teams の Power Apps で、ツリー ビュー を選択します。

  2. インサイト スクリーン を選択します。

  3. OnVisible プロパティを選択します。

  4. 式の次の部分は、タスクが収集される場所です。

    タスクのコレクションを更新する

    これを選択したタスク システムに更新します。

  5. ツリー・ビューインサイト スクリーン を展開します。

  6. ConWeekAtGlance を展開します。

  7. galWeekAtGlance を選択します。

  8. アイテム プロパティ式は「colPlannerTasks」を参照します。 別のタスク管理システムに切り替える場合は、そのシステムからの要約情報を正しく表示するために、この式を更新する必要があります。

問題レポート スクリーンの更新

問題レポート スクリーンには、Planner にアクセスできないユーザーが問題を作成できるように更新する必要がある、Planner との多くの依存関係が含まれています。 アプリを他のタスク管理システムと連携させるために、問題の送信ボタンの OnSelect プロパティを削除します

  1. ツリー ビューで、問題レポート スクリーン を選択します。

  2. 問題の送信 ボタンを選択します。

  3. OnSelect プロパティを選択します。

  4. 式をクリアします。

現在の OnSelect 式を削除したので、フローを作成します。 このフローは、Dataverse の問題レポート テーブルを直接更新します。

  1. 問題の送信 ボタンの OnSelect プロパティにおいて、Power Apps メニューで縦の 3 つのドットを選択し、Power Automate を選択します。

  2. 新しいフローの作成 を選択します。

  3. フローのトリガーとして Power Apps を選択します。

  4. 新しいフロー ウィンドウが開きます。 フロー名フィールドを選択して、名前として Dataverse でタスクを作成する と入力します。

  5. 新しいステップ を選択します。

  6. 作成 用のコネクタを検索して、作成ステップを追加します。

    次の手順で、PowerApps で質問する に値を設定します。 Power Apps から PowerApps で質問する にトリガーされた Power Automate フローで値を設定するとき、パラメーターはフローで作成され、Power Apps はフローがアプリから呼び出されるときにこのパラメーターに値を渡します。

    PowerApps アクションで質問する

  7. 作成ステップの名前を カテゴリー に変更します。

    注意

    作成されたパラメーターに汎用名ではなく適切な名前が含まれるように、値を Power Apps で質問する に設定する前に必ず作成ステップの名前を変更します。

  8. 動的コンテンツ パネルを選択し、PowerApps で質問する アクションを選択します。

  9. 別の作成ステップを追加します。

  10. 新しい作成ステップの名前を テンプレート に変更します。

  11. テンプレート ステップの入力を PowerApps で質問する に設定します。

  12. Dataverse のコネクタを検索して、新しい行を追加します アクションを選択します。

  13. テーブルの 問題レポート を選択します。

  14. 次のフィールド マッピングを設定します。

    Column 価値
    カテゴリ msft_issuereport_categories() に設定し、括弧の間に、動的コンテンツ パネルで category_inputs を選択します。
    名称 Power Apps で質問する
    タスクの割り当て Power Apps で質問する
    タスクの説明 Power Apps で質問する
    タスクの期限 Power Apps で質問する
    テンプレート msft_issuereport_categories() に設定し、括弧の間に、テンプレート作成ステップの出力値を選択します。
  15. 保存 を選択して、 フローを保存します。

  16. フローが保存されたら、Power Apps に戻ります。

  17. 数秒待つと、フローのリストに新しいフローが表示されます。 それを選択します。

  18. OnSelect の式は CreatetaskinDataverse.Run( となります。

  19. 「Createtask…」式の直前にカーソルを置きます。 次に、以下の式を貼り付けます (これは、割り当て先の文字列や説明などの変数を作成するために必要です。変数は、問題フォームからの質問と、タスクの説明に対してユーザーが提供した回答を組み合わせたものとなります)。

    UpdateContext({locSavingRecord: true});
    // Create Task
    With({varHasLocation: !IsBlank(txtLocation.Text) Or tglLocation.Value,varHasDescription: !IsBlank(txtDescription.Text),varHasQuestions: !IsBlank(colCdsIssueQuestions), varBusinessDaysDue: If(IsBlank(gblRecordTemplate.'Business Days until Due'),1, gblRecordTemplate.'Business Days until Due')}), With({varDescriptionPart_Location: If(varHasLocation, Concatenate("Location: ", txtLocation.Text, If( tglLocation.Value, Concatenate(Char(10), "Address: ", lblLocation_Address.Text))), Blank()),varDescriptionPart_Description: If(varHasDescription, Concatenate("Description:",Char(10),txtDescriptionText),Blank()),varDescriptionPart_Questions: If(varHasQuestions,Concat(colCdsIssueQuestions,Concatenate(Instructions,Char(10),If(IsBlank(appResponse),"(No Response)",appResponse)),Char(10) & Char(10),Blank()),varDueDate: With({varBusinessDaysBaseline: varBusinessDaysDue,varWeekEndDaysThisWeek: If((Weekday(gblTodayStartOfWeek.Monday) + varBusinessDaysDue) \> 5,2,0),varWeekEndDaysFuture: If(varBusinessDaysDue \> 5,RoundDown(Value(varBusinessDaysDue) / 5,0) \* 2,0),varTodayOffset: If(Hour(Now()) \< 9,\-1,0)},DateAdd(gblToday,Max(varBusinessDaysBaseline + varWeekEndDaysThisWeek  + varWeekEndDaysFuture + varTodayOffset,1),Days))},
    UpdateContext({locNewTask: {appTitle: gblRecordTemplate.Title, appBucket: locPlannerBucketForTask,
    appStart: Now(),appDue: varDueDate,appDescription: Concatenate(If(varHasDescription,varDescriptionPart_Description,
    Blank()),If(varHasDescription And varHasLocation,Char(10) & Char(10),Blank()), If(varHasLocation,varDescriptionPart_Location,Blank()),If((varHasLocation And varHasQuestions) Or (varHasDescription And varHasQuestions), Char(10) & Char(10), Blank()),If(varHasQuestions,varDescriptionPart_Questions,Blank())),appAssignments: Concat(colCdsIssueAssignments,appEmailAddress,";")}})));
    
  20. 「CreatetaskinDataverse.Run(」 (右括弧) の後にカーソルを置き、フローに渡す値を入力します。 このレッスンで提供されている順序でフロー フィールドを更新した場合、式は次のようになります。

    CreatetaskinDataverse.Run(gblRecordCategory.'Issue Report Category',gblRecordTemplate.'Issue Report
    Template',locNewTask.appTitle,locNewTask.appAssignments,locNewTask.appDescription,locNewTask.appDue,locNewTask.appStart)
    
  21. フロー実行式の後にセミコロンを追加します。

  22. 式の最後に以下を追加して、タスク作成の確認に移動します。

    Navigate('Issue Submission Screen',ScreenTransition.Fade,{locDueDate: locNewTask.appDue});
    UpdateContext({locSavingRecord: false});
    
  23. アプリを保存して公開します。

フローをテスト

タスクを Dataverse で直接作成するための新しいフローが作成されたので、プロセスをテストします。

  1. 問題レポート アプリがインストールされているチームに移動します。

  2. 新しい問題を送信します。

  3. Teams の Power Apps アプリを開いて、タスクが正常に作成されたことを確認します (右クリックしてアプリをポップ アウトします)。

  4. ビルド タブ、インストール済みアプリ タブの順に選択します。

    インストール済みアプリの表示

  5. 問題レポート タイルで、すべて表示 を選択します。

    すべてのアプリを表示

  6. 問題レポート テーブルの省略記号 (...)、データの編集 の順に選択します。

    テーブルのデータを編集する

  7. 報告した問題がテーブルに表示されていることを確認します。 表示されない場合は、Power Automate にログインし、フロー エラーがあるかどうかを確認します。

次の手順

これで、アプリを更新して、Dataverse で直接タスクを作成できました。プロセスをさらに拡張して、事実上すべてのタスク管理システムでタスクを作成できます。 以下は、Power Automate コネクタが存在するタスク管理アプリとサービスのリストです。

  • Microsoft To-Do
  • Outlook Tasks
  • Project Online
  • Google Tasks
  • Metatask
  • Todoist
  • Jira
  • Asana
  • Trello

プロセスを統合するために、前に作成したフローにアクションを追加して、選択したタスク システムにレコードを作成できます。 標準の問題レポート構成で必須フィールドが提供されていない場合は、それらをアプリに追加してから、フローを更新してそれらの値をフローに渡します。

関連項目

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。