【Power Apps】Dynamics365詳細設定画面の開き方

  • Dynamics365詳細設定画面の開き方
    PowerAppsのほとんどの設定はPowerApps管理画面上から実施できるが、
    一部はDynamics365詳細設定画面から実施することになり、
    かつ、開き方が分かりにくいので、メモする。

    モデル駆動型アプリを開き、右上の歯車を選択し、「詳細設定」を押下すると開ける。

【Power Automate】データ取得後の条件分岐

  • データ取得後の条件分岐
    以下の内容を「式」に設定する。

    length(body('コネクタの名称')?['value'])
    

    参考サイト
    ttps://powerusers.microsoft.com/t5/General-Power-Automate/Get-record-count-of-Dynamics-quot-List-Records-quot/td-p/306269
    英語のフォーラムに実例が色々ある。

【Power Automate】SharePointの監視

  • SharePointの監視
    コネクタの種類でSharePointリスト、SharePointドキュメントライブラリの監視対象が変わる。
    PowerAutomateトリガーSharePointリストSharePointドキュメントライブラリ-ファイルSharePointドキュメントライブラリ-フォルダSharePointドキュメントライブラリ-フォルダ内ファイル備考
    アイテムが作成または変更されたとき×××アイテムと項目は同義
    項目が作成されたとき×××アイテムと項目は同義
    項目が削除されたとき×××アイテムと項目は同義
    アイテムまたはファイルが修正されたときアイテムと項目は同義
    ファイルが作成されたとき(プロパティのみ)×
    ファイルが作成または変更されたとき(プロパティのみ)×
    ファイルが削除されたとき×サブフォルダ内にファイルが残っており、フォルダごと削除した場合でも監視対象は1件。
    (フォルダがJSON戻り値となる)
    フォルダ内にファイルが作成されたとき×××トリガーの設定でフォルダが必須項目となっているので、そのフォルダ内のファイルしか監視できない。
    SharePointリストの監視には以下の制限事項がある。
    参照系の列(例えば「ユーザとグループ」)が13個以上あると、監視できない。
    解決策としてはSharePointリストの設定からビューを作成し、
    Power Automateの詳細オプションを開き、「ビューによる列の制限」に
    先ほど作成したビューを指定することで回避できる。

    以下は別の章立てで記事にした方が良い。
    Dynamics365とSharePoint連携してファイルアップロード後のファイルを監視する方法
    Dynamics365とSharePoint連携する場合、エンティティごとのチェックはOFFがオススメ。
    監視したExcelファイルをPowerAutomateで開く場合、ブックIDが必要となる。
    ブックIDの取得方法は少し特殊。

    参考サイト
    ttps://qiita.com/fukasuke/items/1502b9b9b045c78f67e9

【Power Apps】2つの選択肢による絞り込み(キャンバスアプリ)

  • 前提
    取引先企業マスタ
    取引先企業名:AAA株式会社
    取引先企業名:BBB株式会社

    拠点マスタ
    拠点名:AAA本店
    取引先企業名:AAA株式会社

    拠点名:BBB本店
    取引先企業名:BBB株式会社

  • キャンバスアプリ:2つの選択肢による絞り込み
    ・取引先企業と拠点を表示するコントールを2つ配置(コントロール①、コントロール②)
    ・コントロール①②を「テキストの編集」から「許可値」に変更
    ・許可値のデータソースをDataverseやSharePointリストから選択
    ・コントロール①②のDataCardのロックを解除
    ・コントロール①のDataCard内のドロップダウンを選択し、Itemsプロパティに以下を設定
     「Distinct([データリストの名前], [表示したい列の名前])」
     ※これはコントール①に重複値がある場合に設定
    ・コントロール②のドロップダウンを選択し、プロパティタブの依存先を選択
    ・依存先の親コントールにコントール①の情報を設定

    参考サイト
    ttps://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/dependent-drop-down-lists
    ttps://ippu-biz.com/development/powerplatform/powerapps/link-dropdown/

【Power Apps】2つの選択肢による絞り込み(モデル駆動型アプリ)

  • 前提
    取引先企業マスタ
    取引先企業名:AAA株式会社
    取引先企業名:BBB株式会社

    拠点マスタ
    拠点名:AAA本店
    取引先企業名:AAA株式会社

    拠点名:BBB本店
    取引先企業名:BBB株式会社

  • モデル駆動型アプリ:2つの選択肢による絞り込み
    ・TestTableに列の追加で取引先企業を追加(データ型は参照)
    ・TestTableに列の追加で拠点を追加(データ型は参照)
    ・TestTableのフォームを開き、クラシックUIに切り替える
    ・拠点を選択し、プロパティの変更を押下
    ・表示タブの下部にある「関連レコードのフィルタリング」項目
     次の条件を満たすレコードのみ表示する:チェックON
     取引先企業の列を選択
     取引先企業(拠点)を選択
     ユーザがフィルターを無効にできる:チェックOFF
    ・表示タブの上部にある「このフィールドの最近使用したアイテムを無効にする」をチェックON
    ・保存し公開

    参考サイト
    ttps://ippu-biz.com/development/powerplatform/powerapps/mda/link-dropdown-mda/

【Power Apps】権限の考え方

  • 環境
    PowerAppsの右上の環境のDefaultは誰でも触れる環境のため、
    一般公開したくないテーブルやアプリなどは
    別の環境で作成するような構成にすると良さそう。

    参考サイト
    ttps://memo.tyoshida.me/power-platform/powerapps/power-apps-power-automate-governance-administration-2-secure-tenant/

  • テーブル
    テーブル権限は一般者用のセキュリティロールや承認者用のセキュリティロールに対して、
    参照権限や登録権限などを適宜つけておく。
    PowerAppsアプリの一覧画面でFilter関数、Lookup関数、Search関数などを使って
    ・所有者が自分のレコードを抽出させる
    ・承認者が自分のレコードを抽出させる
    などで閲覧制御する。
  • アプリ
    アプリを公開し、共有したいユーザやグループに対して共有する。
    その後、ソリューションのアプリをクリックし、詳細タブで
    アプリのWebサイトのパスを利用者へ展開すると、ブラウザでアプリが利用できる。

【WordPress】WordPressテーマ変更

WordPressを入れ直したので、外観-テーマをTwenty Seventeenに変更しました。
それに伴い、デザインをカスタマイズしています。

  • アーカイブを変更
    トップページが全文表示から抜粋表示に変更となります。
    archive.php

    get_template_part( 'template-parts/post/content', get_post_format() );
    ↓
    get_template_part( 'template-parts/post/content', 'excerpt' );
    
  • 「投稿」文字を削除
    記事の上にある「投稿」の文字を削除します。
    index.php

    以下を削除
    <header class="page-header">
      <h2 class="page-title"><?php _e( 'Posts', 'twentyseventeen' ); ?></h2>
    </header>
    
  • 「カテゴリ」文字を削除
    記事の上にある「カテゴリ」の文字を削除します。
    archive.php

    以下を削除
    <?php if ( have_posts() ) : ?>
      <header class="page-header">
        <?php
          the_archive_title( '<h1 class="page-title">', '</h1>' );
          the_archive_description( '<div class="taxonomy-description">', '</div>' );
         ?>
      </header><!-- .page-header -->
    <?php endif; ?>
    
  • パンくずリストの追加(未実施)
    fanction.php

    以下を一番下に追加
    function breadcrumb(){
      global $post;$str ='';
      if(!is_home()&&!is_admin()){
        $str.= '<div id="breadcrumb" class="cf"><div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;">';
        $str.= '<a href="'. home_url() .'" itemprop="url"><span itemprop="title">ホーム</span></a> &gt;&#160;</div>';
        if(is_category()) {
          $cat = get_queried_object();
          if($cat -> parent != 0){
            $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
            foreach($ancestors as $ancestor){
              $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor) .'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor) .'</span></a> &gt;&#160;</div>';
              }
            }
           $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
        }elseif(is_page()){
          if($post -> post_parent != 0 ){
            $ancestors = array_reverse(get_post_ancestors( $post->ID ));
            foreach($ancestors as $ancestor){
              $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_permalink($ancestor).'" itemprop="url"><span itemprop="title">'. get_the_title($ancestor) .'</span></a> &gt;&#160;</div>';
            }
          }
        }elseif(is_single()){
          $categories = get_the_category($post->ID);
          $cat = $categories[0];
          if($cat -> parent != 0){
            $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
            foreach($ancestors as $ancestor){
              $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor).'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor). '</span></a>→</div>';
            }
          }
          $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
        }else{
          $str.='<div>'. wp_title('', false) .'</div>';
        }
        $str.='</div>';
      }
      echo $str;
    }
    
    以下をパンくずリストを表示したいphp(page.phpやsingle.phpなど)に追加
    <?php breadcrumb(); ?>