元の作成者がアイデア投稿を編集できるようにする

Microsoft Teams の従業員アイデア投稿サンプル アプリは、さまざまなキャンペーン (つまり、共通のテーマに基づいてアイデアをグループ化するためのカテゴリ) のアイデアを従業員が送信するためのプラットフォームを提供します。

アイデア投稿アプリを使用すると、マネージャーはキャンペーンを設定でき、ユーザーはアイデアを送信したり、他のユーザーのアイデアを表示したり、自分が一番好きなアイデアに投票したりできます。 管理者やマネージャーはキャンペーンを編集することでエクスペリエンスをカスタマイズして、アイデアを投稿する人が回答する必要のある根拠のある質問を指定したり、アイデアの投稿ができる期間のしきい値を指定したりできます。 このアプリには、その週に誰が最も多くのアイデアを提出しているか、また誰が最も人気のあるアイデアを提出しているかについての洞察も含まれています。

しかし、ユーザーがアイデアを投稿した後で、アイデアに関する詳細を追加したい場合はどうでしょうか? 標準の従業員アイデア投稿アプリには編集ボタンがありません。 ただし、編集ボタンを追加する場合には、他の人が投稿したアイデアを誰かに編集されたくない場合があるため、ユーザーが編集できるアイデアを制限するように注意しなければなりません。

この記事では、アイデアの元の作成者がアイデアを編集できるようにする方法を説明します。

注意

この記事の手順を開始する前に、従業員アイデア投稿アプリをカスタマイズする をお読みください。

このビデオでは、アイデアを作成者が編集できるようにする方法について説明します:

前提条件

このチュートリアルを完了するには、Microsoft Teams にサインインする必要があり、一部の Microsoft 365 サブスクリプションからサインインできます。 また、従業員アイデア投稿サンプル アプリ がインストールされている必要があります。 このアプリは https://aka.ms/TeamsEmployeeIdeas を使用してインストールすることもできます。

Power Apps で従業員アイデア投稿を開く

Power Apps を使用して Microsoft Teams にある従業員アイデア投稿を開くには:

  1. Microsoft Teams の左ペインにある Power Apps のアイコンを右クリックします。

  2. ビルド タブを選択します。

  3. 左ペインから、従業員アイデア投稿アプリがインストールされているチームを選択します。

  4. インストールされているアプリ を選択し、アイデア投稿 を選択してアプリを開きます。

キャンペーンの詳細画面に編集ボタンを追加します

次に、キャンペーンの詳細画面にアイデアを表示する際に編集画面を開くボタンを追加します。

  1. ツリー ビューを選択して、キャンペーン概要画面 を開きます。

  2. キーボードの Alt キーを押して、下からキャンペーンのうちの 1 つを選択します。 このアクションで、選択したキャンペーンのアイデア投稿のリストから 概要詳細画面 を開きます。

  3. 左ペインのツリー ビューから conCampaignIdeaControls を選択します。

  4. + (挿入) を選択して、ボタン を選択し、コンテナーに新しいボタンを追加します。

  5. 次のボタンのプロパティを更新します:

    プロパティ
    件名 btnCampaignIdeaControls_Edit
    テキスト 「編集」
    ButtonType 「プライマリ」
    X Parent.Width - btnCampaignIdeaControls_Share.Width - Self.Width-30
    (Parent.Height - Self.Height) / 2
    96
    高さ 32
    Visible !locCreateNewIdea And locVisibleCampaignIdea

新しい画面を追加します

次に、編集ボタンを選択したときに選択したアイデアを編集するための画面を追加します。

  1. 左ペインからツリー ビューを選択します。

  2. 新規画面 ボタンを選択して新しい画面を追加します。

  3. 空白のレイアウト を選択します。

  4. 画面の名前を "Edit Idea Screen" に変更します。

  5. 画面の Fill プロパティを選択して、数式バーの値を gblAppStyles.Background.Fill に設定します。

  6. キャンペーン詳細画面 に戻り、編集 ボタンを選択します。

  7. 現在のアイデアレコードの詳細を取得して、編集画面に送信する必要があります。 これを行うには、次の OnSelect プロパティを更新します

    OnSelect = 
    
       Clear(colResponses);
    
       Collect(
    
       colResponses,
    
       {
    
       appRef: GUID(),
    
       msft_name: "Title",
    
       msft_snapshot_sequence: -2,
    
       msft_employeeidea_responsetypecode: 'Employee Idea Response Type'.'Text
       (Single Line)',
    
       msft_responsetext: gblRecordCampaignIdea.Title,
    
       msft_responserating: Blank(),
    
       msft_snapshot_ratinghightext: "",
    
       msft_snapshot_ratinglowtext: ""
    
       },
    
       {
    
       appRef: GUID(),
    
       msft_name: "Description",
    
       msft_snapshot_sequence: -1,
    
       msft_employeeidea_responsetypecode: 'Employee Idea Response Type'.'Text
       (Multiple Lines)',
    
       msft_responsetext: gblRecordCampaignIdea.Description,
    
       msft_responserating: Blank(),
    
       msft_snapshot_ratinghightext: "",
    
       msft_snapshot_ratinglowtext: ""
    
       }
    
       );
    
       Collect(
    
       colResponses,
    
       Filter(
    
       'Employee Idea Responses',
    
       Idea.msft_employeeideaid = gblRecordCampaignIdea.msft_employeeideaid
    
       )
    
       );
    
     Navigate('Edit Idea Screen')
    

ヘッダー コンポーネントを追加します

従業員アイデア投稿アプリは、ヘッダー コンポーネントを使用して、画面間で一貫したメニュー エクスペリエンスを提供します。 このコンポーネントを新しい画面にコピーして、ユーザーが新しい画面で他のアプリ画面に移動できるようにします。

  1. キャンペーン詳細画面 に移動する。

  2. comHeader_CampaignDetail をコピーして、その画面からコンテナーを作成し、いま追加した新しい画面に貼り付けます。

  3. コンテナーの名前を comHeader_CampaignDetail_EditScreen に変更します。

  4. comHeader_CampaignDetail_EditScreeninputHeaderSettings プロパティを選択して、次の数式を貼り付けます。

    {
    
    headerLabel: "Edit Idea",
    
    headerTooltip: "Edit Idea",
    
    headerWidth: 240,
    
    headerScreen: 'Edit Idea Screen'
    
    }
    
  5. 関数リストから inputHelpIcon プロパティを選択して、数式バーから内容を削除します。

  6. 関数リストから inputHelpScreen プロパティを選択して、数式バーから内容を削除します。

  7. 実際には何もしませんが、リンク ボタンがヘッダーに表示される場合があります。 ボタンを削除するには:

    • ヘッダー コンポーネント タブを選択して、ツリー ビューで コンポーネント タブに移動します。

    • btnHeaderExternalLink タブを選択します。

    • 表示 コントロールのプロパティを選択して最後のかっこ ")" を削除し、再度追加します。

これで、画面に戻ると、表示されているプロパティが更新され、リンク ボタンが表示されなくなります。

左側のナビゲーション コンポーネントを追加します

  1. キャンペーン詳細画面 に戻り、conCampaignDetailNav をコンテナーにコピーします。

  2. アイデア画面の編集 に戻り、コピーしたコンテナーを貼り付けます。

  3. 次のプロパティを設定します。

    プロパティ
    件名 conCampaignDetailNav_EditScreen
    X 0

    この変更によりエラーが発生しますが、これは想定されたものです。 これらは次のステップで修正します。

  4. imgCampaignDetail_SortGallery_1 – DisplayMode の数式エラーについては、別の画面から数式をコピーしたために新しいアイデアかどうかを確認する変数がありました。 この画面は編集のみに使用されるため、DisplayMode の数式を次のように更新してください。

    If(
    
    locVisibleCampaignView,
    
    DisplayMode.Edit,
    
    locVisibleCampaignIdea,
    
    DisplayMode.Edit,
    
    DisplayMode.Disabled
    
    )
    
  5. galCampaignDetailNav_1 – DisplayMode の数式エラーについては、別の画面から数式をコピーしたため、新しいアイデアかどうかを確認する変数がありました。 この画面は編集のみに使用されるため、DisplayMode の数式を更新してください

    If(
    
    locVisibleCampaignView,
    
    DisplayMode.Edit,
    
    locVisibleCampaignIdea,
    
    DisplayMode.Edit,
    
    DisplayMode.Disabled
    
    )
    

アイデアの詳細セクションに新しいコンテナーを追加します

次に、アイデア編集画面のアイデアの詳細セクションを含むコンテナーを追加します。

  1. 新しく追加した アイデア画面の編集 を選択します。

  2. 左ペインから + (挿入) ボタンを選択します。

  3. レイアウト > コンテナー を選択します。 コンテナーが追加されました。

  4. コンテナーに次のプロパティを設定します。

    プロパティ
    件名 conIdeaEditPane
    X 300
    comHeader_CampaignDetail_EditScreen.Y + comHeader_CampaignDetail_EditScreen.Height
    Parent.Width - conCampaignDetailNav_EditScreen.Width
    高さ Parent.Height - Self.Y
  5. 上記の手順を使用して、この新しいコンテナー内に別のコンテナーを追加します。

  6. コンテナーに次のプロパティを設定します

    プロパティ
    件名 conCampaignIdeaControls_EditScreen
    X 0
    0
    Parent.Width
    高さ 60
  7. キャンペーン詳細画面 に移動して、btnCampaignIdeaControls_EditbtnCampaignIdeaControls_BackimgCampaignIdeaControls_Back コントロールをコピーします。

  8. アイデア画面の編集 に戻り、最初に追加したコンテナーを選択します。

  9. このコンテナーにコピーしたコントロールを貼り付けます。

  10. btnCampaignIdeaControls_Back_1 の OnSelect プロパティを Navigate (キャンペーン詳細画面) に更新します。

  11. btnCampaignIdeaControls_Edit_1 を選択して、次のプロパティを更新します。

    プロパティ
    テキスト 「更新」
    Visible
    X Parent.Width - Self.Width – 20
    (Parent.Height - Self.Height) / 2
    96
    高さ 32
  12. 先に追加した新しいコンテナー (conIdeaEditPane) にキャンバスを追加する必要があります。 キャンバスを追加するには、新しい画面 > シナリオ > スクロール可能 で、スクロール可能な新しい画面を追加して、そのキャンバスをコピーします。

  13. アイデア画面の編集 に戻り、コンテナー conIdeaEditPane を選択して、キャンバスを貼り付けます。 キャンバスがコンテナーに貼り付けられました。

  14. キャンバスに、次のプロパティを設定します。

    プロパティ
    件名 canvasEditScreen
    X 0
    conCampaignIdeaControls_EditScreen.Y + conCampaignIdeaControls_EditScreen.Height
    Parent.Width
    高さ Parent.Height - Self.Y
  15. キャンペーン詳細画面 に戻り、galIdeaResponses ギャラリーをコピーします。

  16. アイデア画面の編集 に戻り、前の手順で追加したキャンバスを選択します。

  17. ギャラリーをキャンバスに貼り付けます。
    shpIdeaResponseRating_Value_1 の BorderThickness プロパティにエラーが表示される場合があります。

  18. galIdeaResponses にプロパティを設定します。

    プロパティ
    BorderThickness If((ThisItem.appRefNo <> ThisItem.appRatingValue),1,0)
    X 0
    0
  19. 編集エクスペリエンスを新しいアイデア エクスペリエンスと一致させるため、次の galIdeaResponseRating_1アイテム のプロパティを更新します。

    With(
        {varRecord: ThisItem},
        Table(
            {
            appRefNo: 1,
            appRef: varRecord.'Employee Idea Response',
            appRatingValue: varRecord.'Response Rating',
            appRatingTextLow: varRecord.'Rating Text (Low)',
            appRatingTextHigh: varRecord.'Rating Text (High)'
            },
            {
            appRefNo: 2,
            appRef: varRecord.'Employee Idea Response',
            appRatingValue: varRecord.'Response Rating',
            appRatingTextLow: varRecord.'Rating Text (Low)',
            appRatingTextHigh: varRecord.'Rating Text (High)'
            },
            {
            appRefNo: 3,
            appRef: varRecord.'Employee Idea Response',
            appRatingValue: varRecord.'Response Rating',
            appRatingTextLow: varRecord.'Rating Text (Low)',
            appRatingTextHigh: varRecord.'Rating Text (High)'
            },
            {
            appRefNo: 4,
            appRef: varRecord.'Employee Idea Response',
            appRatingValue: varRecord.'Response Rating',
            appRatingTextLow: varRecord.'Rating Text (Low)',
            appRatingTextHigh: varRecord.'Rating Text (High)'
            },
            {
            appRefNo: 5,
            appRef: varRecord.'Employee Idea Response',
            appRatingValue: varRecord.'Response Rating',
            appRatingTextLow: varRecord.'Rating Text (Low)',
            appRatingTextHigh: varRecord.'Rating Text (High)'
            }
        )
    )    
    
  20. imgIdeaResponseRating_Select_1OnSelect プロパティを更新します。

    UpdateIf(
        colResponses,
        colResponses[@'Employee Idea Response'] = ThisItem.appRef,
        {msft_responserating: ThisItem.appRefNo}
    );
    
  21. キャンペーン詳細画面 からキャンバスへ、コントロールを dtcFilesImages からコピーする必要があります。

    dtcFileImages の下のコントロールのリスト

  22. 新しく展開した アイデア画面の編集 を選択します。

  23. galIdeaResponses_2 を選択して、コピーしたコントロールを貼り付けます。 コントロールを貼り付けた場合、一緒にいくつかのエラーも表示されます。

    アイデア応答ギャラリーのエラー

  24. 1 つを除いたすべてのエラーは、コントロールの可視性に関連しています。 エラーを選択して、数式バーを編集する を選択します。

  25. すべてのコンロールが ture になるように 可視化 プロパティを設定します。

  26. テキスト プロパティに lbldeaFiles_Header_2 のエラーがあります。

  27. テキスト のプロパティを “Attachments” に更新します。

  28. lbldeaFiles_Header_1Y プロパティを "galIdeaResponses_1.Y + galIdeaResponses_1.Height +20" に更新します。

  29. 添付セクション imgIdeaFile_Delete_1 から 削除 アイコンを選択して、OnSelect プロパティに Remove(colFiles,ThisItem);Collect(colRemovedFiles,ThisItem) を設定します。

  30. キャンバスとともに追加されたデータカードを選択し、次のプロパティを更新します。

    プロパティ
    X 0
    0
    Parent.Width
    高さ galIdeaFiles_1.Y + galIdeaFiles_1.Height + 20
  31. データカードの下の galIdeaFiles_1 を選択します。

  32. OnSelect プロパティを選択して、 Launch(ThisItem.msft_file.Value) を設定します。

  33. 次に、選択したアイデアにパッチを適用して更新するようにボタンを設定します。 アイデア画面の編集 – コンテナー 3 から 更新 ボタンを選択して、次の数式に OnSelect プロパティを設定します。

    UpdateContext({locSelectedIdea: gblRecordCampaignIdea.'Employee Idea'});
    
    Patch(
    
    'Employee Ideas',
    
    gblRecordCampaignIdea,
    
    {
    
    Title: LookUp(
    
    colResponses,
    
    Sequence = -2,
    
    msft_responsetext
    
    ),
    
    Description: LookUp(
    
    colResponses,
    
    Sequence = -1,
    
    msft_responsetext
    
    ),
    
    'Attachment Count': CountRows(
    
    Filter(
    
    colFiles,
    
    appIsNew
    
    )
    
    )
    
    }
    
    );
    
    ForAll(
    
    RenameColumns(
    
    Filter(
    
    colResponses,
    
    Sequence >= 0,
    
    !IsBlank('Employee Idea Response')
    
    ),
    
    "msft_employeeidea_responseid",
    
    "ResponseId"
    
    ),
    
    Patch(
    
    'Employee Idea Responses',
    
    LookUp(
    
    'Employee Idea Responses',
    
    'Employee Idea Response' = ResponseId
    
    ),
    
    {
    
    Instructions: ThisRecord.Instructions,
    
    Question: ThisRecord.msft_employeeidea_questionid,
    
    Sequence: ThisRecord.Sequence,
    
    'Response Type': ThisRecord.'Response Type',
    
    'Response Text': ThisRecord.'Response Text',
    
    'Response Rating': ThisRecord.'Response Rating',
    
    'Rating Text (Low)': ThisRecord.'Rating Text (Low)',
    
    'Rating Text (High)': ThisRecord.'Rating Text (High)'
    
    }
    
    )
    
    );
    
    ForAll(
    
    Filter(
    
    colFiles,
    
    appIsNew
    
    ),
    
    Patch(
    
    'Employee Idea Files',
    
    Defaults('Employee Idea Files'),
    
    {
    
    Idea: gblRecordCampaignIdea,
    
    Name: Text(ThisRecord.msft_name),
    
    File: {
    
    FileName: Text(ThisRecord.msft_name),
    
    Value: ThisRecord.appFileValue
    
    }
    
    }
    
    )
    
    );
    
    ForAll(
    
    colRemovedFiles,
    
    Remove(
    
    'Employee Idea Files',
    
    ThisRecord
    
    )
    
    );
    
    Set(
    
    gblRecordCampaignIdea,
    
    LookUp(
    
    'Employee Ideas',
    
    'Employee Idea' = locSelectedIdea
    
    )
    
    );
    
    ClearCollect(
    
    colResponses,
    
    Filter(
    
    'Employee Idea Responses',
    
    Idea.msft_employeeideaid = gblRecordCampaignIdea.msft_employeeideaid
    
    )
    
    );
    
    ClearCollect(
    
    colFiles,
    
    Filter(
    
    'Employee Idea Files',
    
    'Employee Idea Files'[@Idea].'Employee Idea' = gblRecordCampaignIdea.'Employee
    Idea'
    
    )
    
    );
    
    Set(
    
    gblRecordCampaignIdea,
    
    LookUp(
    
    'Employee Ideas',
    
    'Employee Idea' = locSelectedIdea
    
    )
    
    );
    
    Navigate(
    
    'Campaign Detail Screen',
    
    ScreenTransition.None,
    
    {
    
    locVisibleCampaignIdea: true,
    
    locVisibleCampaignView: false,
    
    locCreateNewIdea: false
    
    }
    
    )
    
    ## 
    

アイデア投稿アプリを公開します

掲示板アプリの変更がすべて完了しました。 これで、右上の Teams に公開 ボタンを選択してアプリを公開できます。

アプリをテストする

最後に、アプリをテストして、アイデアを編集してみましょう。

  1. Teams にログインして、アイデア投稿アプリがインストールされているチームに移動します。

  2. トップの アイデア投稿 タブを選択します。

  3. キャンペーンの 1 つの例として、職場の安全 を選択します。

  4. ユーザーによって作成されたアイデアを開きます。アイデアには、アイデアの作成者名が記載されている必要があります。

  5. キャンペーン詳細画面編集 ボタンが表示されているのを確認します。

    アイデア画面の編集オプションを選択

  6. 編集 ボタンを選択して、アイデアの編集 画面が開くことを確認します。

  7. すべての詳細が画面に表示されていることを確認します。

    アイデア詳細画面

  8. アイデアにいくつかの変更を加えてから、更新 ボタンを選択します。

  9. キャンペーン アイデアの詳細 画面に戻り、行ったすべての変更が保存され、この画面に表示されていることを確認します。

関連項目

注意

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

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