[Datavere Accelerator App]ローコードプラグインの作成方法と利用方法調査

# [Datavere Accelerator App]ローコードプラグインの作成方法と利用方法調査
## 目次
1. [Datavere Accelerator Appとローコードプラグインの概要](#1-dataverseローコードプラグインの概要)
1.1. [Dataverseにおけるプラグイン機能について](#11-dataverseにおけるプラグイン機能について)
1.2. [Dataverse Accelerator Appの概要とローコードプラグインについて](#12-dataverse-accelerator-appの概要とローコードプラグインについて)
1.3. [Dataverse Accelerator Appのインストール方法](#13-dataverse-accelerator-appのインストール方法)
1.4. [Dataverse Accelerator Appの利用方法とローコードプラグイン作成にあたっての前提条件](#14-dataverse-accelerator-appの利用方法とローコードプラグイン作成にあたっての前提条件)
2. [インスタントローコードプラグイン](#2-インスタントローコードプラグイン)
2.1 [インスタントローコードプラグインの概要](#21-インスタントローコードプラグインの概要)
2.2 [インスタントローコードプラグインの作成・編集・削除方法](#22-インスタントローコードプラグインの作成編集削除方法)
2.3 [インスタントローコードプラグインに外部サービスのアクションを組み込む方法](#23-インスタントローコードプラグインに外部サービスのアクションを組み込む方法)
2.4 [キャンバスアプリ上でのインスタントローコードプラグインの実装方法及び試用](#24-キャンバスアプリ上でのインスタントローコードプラグインの実装方法及び試用)
2.5 [クラウドフロー上でのインスタントローコードプラグインの試用](#25-クラウドフロー上でのインスタントローコードプラグインの実装方法及び試用)
3. [自動ローコードプラグイン](#3-自動ローコードプラグイン)
3.1 [自動ローコードプラグインの概要](#31-自動ローコードプラグインの概要)
3.2 [自動ローコードプラグインの作成方法](#32-自動ローコードプラグインの作成方法)
3.3 [モデル駆動アプリ上での自動ローコードプラグインの試用](#33-モデル駆動アプリ上での自動ローコードプラグインの試用)
3.4 [自動ローコードプラグインとPower Automate、ビジネスルール、列の計算列設定との比較](#34-自動ローコードプラグインとpower-automateビジネスルール列の計算列設定との比較)
4. [ローコードプラグイン作成・編集の際の注意点及び不具合とそれに対する対処方法](#4-ローコードプラグイン作成編集の際の注意点及び不具合とそれに対する対処方法)
4.1. [ローコードプラグインの表示名設定の不具合](#41-ローコードプラグインの表示名設定の不具合)
4.2. [編集時に発生するエラーや注意点](#42-編集時に発生するエラーや注意点)
4.3. [作成・編集画面の表示不具合](#43-作成編集画面の表示不具合)
4.4. [外部サービスのアクションを組み込んだローコードプラグインのエラー](#44-外部サービスのアクションを組み込んだローコードプラグインのエラー)
4.5. [ローコードプラグインで使用できない関数](#45-ローコードプラグインで使用できない関数)
4.6. [ローコードプラグインを用いてレコードに値を入力する際の注意点](#46-ローコードプラグインを用いてレコードに値を入力する際の注意点)

## 1. Dataverseローコードプラグインの概要
### 1.1. Dataverseにおけるプラグイン機能について

Datavereseのプラグインとは、Microsoft Dataverse上のデータ操作の処理中に発生した特定のイベント（レコードの登録や更新など）をトリガーとして、実行される独自のカスタマイズされた処理を記述したコードのことを指します。これにより、Dataverseで使用できるビジネスルールやPower Automateのフローでは実現できないオリジナルのビジネスロジックを作成することができます。

一方で、プラグイン機能を利用するためにはプログラミング言語の一つであるC#を使ってプラグインを作成する必要があるため、ITに関する専門知識がない人だけでなく、C#にある程度、知識・経験がない技術者にとってもハードルが高いものとなっています。

※プラグインについての詳細は次のリンクを参照してください。

https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/plug-ins

### 1.2. Dataverse Accelerator Appの概要とローコードプラグインについて

Dynamics 365アプリのツールの一つであるDataverse Accelerator Appについて紹介します。
このツールでは、元来プラグイン作成に必要だったC#を使用せず、ローコード言語であるPower Fxを使ってプラグインの作成・使用ができます。これにより、比較的簡単にプラグイン機能を利用することができます。

※Dataverse Accelerator Appは現在(2023/11/15日時点)、開発環境とテスト環境で試用できるプレビュー機能です。そのため、運用環境では使用できません。

Dataverse Accelerator App
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/e3607c7e-6f22-d6cb-0b7d-74d88beeaca3.png", width = 70%>

本アプリ上で作成できるローコードプラグインはインスタントローコードプラグインと自動ローコードプラグインの二種類です。それぞれの特徴と作成方法等については後述します。

※Dataverse Accelerator Appおよびローコードプラグインについての詳細は次のリンクを参照してください。

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/low-code-plug-ins?tabs=instant

### 1.3. Dataverse Accelerator Appのインストール方法

Dataverse Accelerator Appのインストール方法について説明します。

+ Power Apps画面で左メニューの一番下にある「Power Platform」を押下し、Power Platform画面に移動します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/09f353e1-37ac-6cf7-2568-d1acff6b8095.png", width = 70%>

2023年の10月1日以降に作成した環境にはDataverse Accelerator Appが自動でインストールされています。

そのため、まず、対象環境にすでにDataverse Accelerator Appがインストールされているか確認します。

+ 左メニューの「環境」を押下し、対象となる環境名を選択します。
※今回は"個人開発環境(dev環境)"を想定して選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/338f3f56-56bc-5e42-4f6c-d0ec627380dc.png", width = 70%>

+ 画面上部にあるバーの内から「リソース」、「Dynamics 365アプリ」を押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/c6bd8e80-1d42-8bbb-d82c-7dcccfef8fea.png", width = 70%>

Dynamics 365アプリの一覧に「Dataverse Accelerator」があり、また「インストール済み」と表示されている場合、既に対象環境にDataverse Accelerator Appが導入されています。
※「インストール済み」ではなく「使用可能な更新プログラム」と表示があれば、三点メニュー（…）からそのアプリの最新バージョンへの更新ができます。

インストールが確認できた場合は、[次項](#14-dataverse-accelerator-appの利用方法とローコードプラグイン作成にあたっての前提条件)に進みます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/29867299-d5bc-0ba8-e6a8-5a0f2bcfefa5.png", width = 70%>

インストールが確認できない場合は以下の方法でインストールを行います。
※インストールはシステム管理者またはそれに準じるセキュリティロールが割り当てられたアカウントで行ってください。

+ 左メニューにある「リソース」を選択し、「Dynamics 365 アプリ」を押下します。

+ Dataverse Acceleratorの三点メニュー(…)、インストールの順番に押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/8cd118e8-53cb-f859-6a66-3b1eb171c7d5.png", width = 70%>

+ インストール画面でドロップリストからインストールする対象の環境を選択し、下部にある「サービス使用条件に同意する」をチェックし、インストールを押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/84298708-1e0f-a9db-ba12-8449f446b1fe.png", width = 50%>

+ 対象環境のDynamics 365 アプリ画面でDataverse Acceleratorの状態が「インストール中」になってることを確認します。

+ 状態が「インストール済み」になるまで待機します。
※ある程度待機しても、「インストール済み」にならない場合は画面上部のバーにある「サインの情報に更新」を押下して「インストール済み」になるまで再度待機します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9cfb6919-8b24-8971-8a20-9516a725245d.png", width = 70%>

「インストール済み」を確認次第、Dataverse Accelerator Appのインストール完了です。

### 1.4. Dataverse Accelerator Appの利用方法とローコードプラグイン作成にあたっての前提条件
Dataverse Accelerator AppはPower Appsから開きます。

+ Power Appsの初期画面左のメニューから「アプリ」を押下します。
+ 画面中央付近にある「自分と共有」を押下します。
+ Dataverse Acceleratorをチェックまたは縦三点リーダーを押下後、「再生」を押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/a13825fd-aaef-323f-2e8f-095e34a61a7c.png", width = 70%>

以上の操作で、Dataverse Accelerator Appを開き、ローコードプラグインの作成ができます。

※ただし、Dataverse Accelerator Appでのローコードプラグインの作成には、次の前提条件を満たす必要がありますので必ず確認してください。
1. Power Platform 環境におけるシステム管理者またはシステム カスタマイザーのセキュリティロールに割り当てられたアカウントであること。
2. Dataverse Accelerator Appへのアクセス権限を持っていること。

## 2. インスタントローコードプラグイン
本項ではDataverse Accelerator Appで作成できるローコードプラグインの内、インスタントローコードプラグインについて概要、作成、実装方法について主に紹介します。

### 2.1 インスタントローコードプラグインの概要

インスタントローコードプラグインはキャンバスアプリ上での手動ボタンの動作時やPower Automateクラウドフロー内のDataverse関連のアクション等に実装できるプラグインです。

インスタントローコードでは入出力パラメータや特定のテーブルに関連付けて（バインド）、レコードを指定し、そのレコードに関する処理を行うといった設定をすることが可能です。

### 2.2 インスタントローコードプラグインの作成・編集・削除方法

インスタントローコードプラグインの作成方法について説明します。

インスタントローコードプラグインの作成画面へは次の2通りの方法で移動できます。

①. Dataverse Accelerator App初期画面から「Create instant Plug-in」を押下します。
②. 左上の「New plug-in」を押下し、「Instant plug-in」を選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/c7c09c88-6da2-8f37-bc1e-5caeb6a26487.png", width = 70%>

作成画面からインスタンスローコードプラグインの作成に必要な設定をしていきます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/05d8010b-2961-7c6a-c5a0-09b146303ada.png", width = 70%>

以下、基本的なインスタントローコードプラグイン作成において必要な設定です。作成例も併せて記載します。

#### Display Name (必須、編集不可)
+ インスタントローコードプラグインの表示名を設定します。
+ 利用できる名前の場合、右側に緑色のチェック欄が出ます。
+ 利用できない名前の場合、右側にエラー表示が出ます。

作成例：「Instant Plug-in Sample01」と名付けます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/41fdf3e8-39c5-53cc-5d5a-b4549430c499.png", width = 30%>

※利用不可の場合のエラー表示
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/5ae6c714-a8af-ef34-b825-0d6e642a4d5a.png", width = 55%>

#### Parameters（必須、編集可）
+ 入力パラメータ、出力パラメータの変数名(ラベル)と値のデータ型を指定します。
+ 変数を追加したい場合は入力パラメータ及び出力パラメータにある「+ New input Parameter」を押下し、削除する場合は各変数設定の右側にあるごみ箱アイコンを押下します。
+ パラメータの設定は任意のため、パラメータを使わない機能をもつローコードプラグインを作成することも可能です。

作成例：入力パラメータに二つの整数型の変数`x`と`y`を設定し、出力パラメータに整数型の変数`z`を設定します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/ccb8c005-c43c-95bf-428d-ca8ee5e98c1a.png", width = 70%>

#### Expression（任意、編集可）
+ Power Fxを用いてプラグインの処理内容を記述する欄です。
+ 先程設定した入力パラメータと出力パラメータを使った処理や
+ 静的解析機能があるため、ソースコードに文法的な間違いがあれば該当箇所を赤の波線で表示し、また該当箇所にマウスを近づけることで、エラー内容が表示されます。

作成例：`z = x + y`という単純な計算を機能として実装します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/b8feb8df-8319-386e-84ff-d2f1c8e028c1.png" , width = 70% >

※エラー表示(他の設定は変えずにzを真偽値型にした場合の例)
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/3fbd1ab9-d975-f14c-6aa0-3c6e5d9f7126.png" , width = 70%>

#### Advanced options
画面下部にあるAdvanced optionsを押下して、さらに設定していきます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/7036d698-f66d-4263-6ccc-7ea0f9f6803f.png", width = 70% >

#### Solution(必須、編集不可)

+ 本プラグインをコンポーネントとしてまとめるソリューションを設定します。

作成例：あらかじめ作成しておいたソリューションを設定します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/7e536e1e-74bc-c381-65ee-9ac9dd83022d.png", width = 30% >

#### Name (必須、編集不可)
+ プラグイン自体のデータ操作や機能を使うために実際にプラグインを呼び出す際に必要な論理名を設定します。
+ 命名規則はDataverseのテーブルや列のスキーマ名と同じです。

作成例：表示名の入力に沿って、論理名が自動入力されますので、その入力値を使用します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/739650c1-5312-62ea-7ca2-53f0f93bfb64.png", Width = 30% >

#### Description(任意、編集可)
+ 作成するプラグインの機能について詳細に表記する欄です。

作成例：「インスタントローコードプラグイン動作確認用➀」と記入します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/823db7b7-8669-b8cd-32b6-52daf9ff219f.png" , width = 30% >

#### Scope(必須、編集不可)
+ ローコードプラグインを特定のテーブルに関連付けるかどうかの設定です。
+ ローコードプラグインにテーブルを関連付けることで、テーブル内の特定の行に対して、データ操作を行う機能を加えることができます。
+ テーブルを関連付ける場合は「エンティティ」、関連付けない場合は「グローバル」を選択します。
+ 「エンティティ」を選択した場合は、さらに「Table」のドロップダウンリストから関連付けるテーブルを選択します。

作成例：今回はグローバルを選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/e70bbfe9-cef0-2bdb-b3f0-ef9657ab3528.png", width = 30% >

※「エンティティ」を選択した場合も以下に図示します。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/cdf81eee-cc93-c18e-b1db-62cd2eb7a368.png", width = 30%>

+ 以上の設定を完了後、上部にある「Save」を押下して、保存します。
+ 保存に成功した場合、成功したという表示が出ます。
※ 保存が完了すると編集不可の設定は編集できなくなります。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/7671f052-99a3-c716-e598-920b759dfbdc.png",width = 70%>

+ 保存完了後、「Save」の右隣にある「Test」を押下し、実際に動くかの検証をします。
+ テスト画面では入力パラメータに値を設定し、画面上部の「Run」を押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/88583079-378f-4a99-5dc4-b5666afdfac6.png", width = 70%>

+ 成功した場合、成功メッセージが表示されます。出力パラメータを設定していた場合、出力パラメータの出力結果も表示されます。（今回は入力パラメータ`x`と`y`に4と5を入力したので出力`ｚ`の値が9と表示されています。）

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f56df85d-df12-c859-3951-32320e972924.png", width = 70%>

「Scope」で「エンティティ」を作成した場合は、テスト画面に「ThisRecord」欄があります。この項欄に関連付けたテーブル内のレコードの固有IDを入力することで、そのレコードをPowerFx内でThisRecordとしてテスト使用することができます。
※ScopeローコードプラグインのExpression内でThisRecordを使用できません。

以上でインスタントローコードプラグインの基本的な作成方法の完了です。

インスタントローコードプラグインの編集と削除方法は簡単です。

#### ローコードプラグインの編集及び削除方法

編集や削除をしたい場合はDataverse Accelerator Appの初期画面から編集または削除したいローコードプラグインをチェックしてください。

+ 編集したい場合は「Edit plug-in」を押下することで編集画面に移ります。
+ 削除したい場合は「Delete plug-in」を押下することで削除することができます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f8c6c81e-fd43-909c-337b-93c28fdcca80.png", width = 70%>

### 2.3 インスタントローコードプラグインに外部サービスのアクションを組み込む方法

ローコードプラグインではPower Automateと同じように、接続参照を用いることで外部サービスのアクションをローコードプラグインの機能として利用することができます。

外部サービスのアクション機能の組み込み方法については、次の図のようなインスタントローコードプラグインを作成し、これを用いて説明します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/7476938a-7310-bb9c-61fb-3e3cd822d3a6.png", width = 70% >

#### Connection References（任意、編集可）
+ ローコードプラグインに外部サービスのアクションを利用したい場合は右上のコンセントプラグアイコンを押下し、接続参照の一覧が表示された画面に移動します。

まず、ローコードプラグインで利用する接続参照を作成していきます。

+ 既存の接続参照がない場合は「Create a connection reference」を押下して、接続参照作成画面に移ります。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/dcf3225c-4b2f-d4a4-d20f-89bc276b5641.png", width = 30%>

+ 既存の接続参照がある場合は「+ New」を押下して、接続参照作成画面に移ります。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/0e29d6b2-bfa5-e6e0-82d8-8e03f78ca232.png", width = 30%>

+ 接続参照画面では、接続参照のDisplay Name（表示名）、Name（論理名）、Description（詳細）、Connector（利用する外部サービスコネクタ）、Connection（選択先情報）をそれぞれ設定します。
※Description以外はすべて必須設定です。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/90b37bba-dbc4-c7cd-e008-ee750072800a.png", width = 30%>

+ Conectorではドロップダウンリストから外部サービスを選択します。
接続参照について今回はOffice 365 Outlookコネクタを設定します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9fe538c7-ee76-04d2-3bdd-c5636f1e6d2c.png", width = 30%>

+ Connectionについてはコネクタの接続先情報をドロップダウンリストから選択します。
+ 選択したコネクタによってコネクタそのものや使用するアカウントを選択します。

コネクタの接続先情報選択(アカウントを選択)
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/2c61eb9e-4490-ce6e-08e8-d4ff14d48fd7.png", width = 30% > 

コネクタの接続先情報(コネクタそのもの)
<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/eab0dac4-e75f-8e0e-9774-5482467256bd.png", width = 30%>

+ アカウントがない場合は、➀「+ New Connection」を押下してコネクタ作成画面にタブ移動しコネクタの作成後、➁接続参照作成画面に戻り「Reflesh」を押下して、ドロップダウンリストからアカウント先を選択します。

コネクタの作成画面への移動
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/0779d7bd-4504-153e-14b9-2119c771aa36.png" , width = 30%>

コネクタの作成については以下の通りです。

1\. 接続参照作成画面で選択した外部サービスコネクタの作成画面が表示されますので、「作成」選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/33fe3d6e-ef96-ee6f-90c3-39c8ded04ddf.png", width = 60% >

2\. 「アカウントを選択する」画面が表示された場合は、どのアカウントの外部サービスと接続するか選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/269c8094-9c99-14ce-f6a0-a08f3c0f7501.png", width = 40%>

3\. Power Appsの接続しているコネクタの一覧が表示されている画面に移動します。ここで、先程作成したコネクタの確認ができます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/07559ac5-841b-fc6f-5dae-98fb01ded07f.png", width = 70% >

+ 接続参照作成画面ですべての設定が完了したら、「Create」を選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/ee5e2f7c-ac96-563c-cb33-d39ef384a217.png" , width = 30%>

以上で、接続参照作成完了です。
次に作成した接続参照を用いて、外部サービスのアクション機能をローコードプラグインに実装します。

+ 先程の接続参照作成画面で「Create」を押下後、または作成済み接続参照の一覧画面から選択後、外部サービスのアクション一覧画面へ移動します。

接続参照一覧から選択
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/bbace263-5efa-89ea-1367-e4feb1aa8b1e.png", width = 30%>

※現時点では、全ての外部サービスのアクションがローコードプラグイン機能としてサポートされているわけではないとMicrosoftの公式ドキュメントで記載されております。そのため、接続参照作成画面のConnectorから設定できる外部サービスコネクタのドロップダウンリストに無い外部サービスのアクションはローコードプラグインに組み込むことができない可能性があります。
※Dataverseコネクタについては使用しないようにとMicrosoftの公式サイトで明確に記載されております。そのため、Dataverse内のテーブルにアクセスする場合は接続参照機能を使わず、Power Fx関数を使用してください。

接続参照作成画面のConnectorから設定できる外部サービスコネクタのドロップダウンリスト
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9ae67c85-eb7b-55a9-4b80-a05b3dc84bb9.png", width = 30%>

+ 使用したいアクションを選択し、コピーを押下します。コピー押下後、「Copied! ~」というメッセージが表示されます。
今回は「メールの送信 (V2)」機能を利用することを想定します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/93076d46-f248-e3f5-0ab1-668008bff691.png", width = 30%>

+ Expressionに張り付けます。これにより外部サービスのアクションをPower Fxの関数として使えるようになります。ただし、アクションを実際に利用できるようにするためには関数内に必要な設定を記入します。

コピーした外部サービスのアクション関数
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/4b462818-d59d-586f-18d7-d7a5e1403336.png", width = 70% >

アクション関数内に必要なパラメータを入力
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/ea54ac92-5b09-7537-6551-3691a1d8a418.png",width =70%>

以上で、ローコードプラグインに対して外部サービスのアクション機能の組み込み方法完了です。

### 2.4 キャンバスアプリ上でのインスタントローコードプラグインの実装方法及び試用

キャンバスアプリ上で実際にインスタントローコードプラグインを実装方法について説明します。

+ 次のようなDataverseテーブル(Dataverse Acceleratorお試し用テーブル)をあらかじめ用意します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/4c5a6b74-3abc-5497-177c-4ed82d0e6fec.png", width = 70%>

+ [2.2](#22-インスタントローコードプラグインの作成編集削除方法)で作成したインスタントローコードプラグイン(Instant Plug-in Sample01)と次の二つのインスタントローコードプラグインを用意します。設定については以下の通りです。

1. 表示名：Instant Plug-in Sample02
入力パラメータ{パラメータ名,型}：{x,文字列型}、{y,文字列型}
出力パラメータ：なし
機能：用意したDataverseテーブルの最初の行の内「Dataverse Accelerator動作確認」列の値を変更して更新する機能
Scopeの設定:グローバル
2. 表示名：Instant Plug-in Sample03
入力パラメータ{パラメータ名,型}：{x,文字列型}、{y,文字列型}
出力パラメータ：なし
機能：用意したDataverseのテーブルの指定した行の内「Dataverse　Accelerator動作確認」列の値を変更して更新する機能
Scopeの設定：エンティティ（関連付けるテーブル：）

Instant Plug-in Sample02
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/b9634a52-7a12-000a-01a4-2b3108e44dcf.png", width = 70%>

Instant Plug-in Sample03
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f3946214-2f28-0aaa-ead3-e7640c0c6017.png", width = 70%>

+ キャンバスアプリを作成し、スクリーン上に入力パラメータを入力する入力フォーム(Textinput1、Textinput2、初期値０)、ボタン、出力フォーム(Output)を用意します。

このスクリーン上にあるボタンを押すことで入力フォームに入力した値を基に出力フォームに結果が表示できるように作成していきます。

<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/231f3c12-7f9f-27d7-3ecf-d61e8bf38822.png", width = 70%>

このボタンを押したときにInstant Plug-in Sample01プラグインの処理機能が実行されるように設定します。
+ キャンバスアプリの左側にあるメニューからデータアイコンを選択し、データの追加押下します。
+ データソースの選択から、Microsoft Dataverseの「Environment」を押下します。
インスタントローコードプラグイン作成時のScope設定で「グローバル」を選択したプラグインについては「Environment」をデータソースに追加することでキャンバスアプリに実装できます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/e0ec40f1-27bd-567b-1bff-67ae77e2cb24.png", Width = 30%>


+ Dataverse Accelerator Appを開き、Instant Plug-in Sample01をチェックします。
+ 上部にある「Copy code snippet」を押下します。コピーが成功すると上部にコピーが成功した旨のメッセージが表示されます。

<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/08db7fdd-0a25-278f-ec51-50f733d8e7e1.png", width = 70%>

+ ボタンを選択し、Onselectプロパティを選択します。
+ 先程コピーしたものをfx欄に貼り付けます。

<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9acf3013-9753-caf6-9b2b-5bfa792ab719.png", width = 70%>

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/6617a865-5a6e-0ed1-c1e2-6faaab22601d.png", width = 70%>

+　fx欄のxとyのValueの箇所をそれぞれ入力フォームのラベル名Textinput1とTextinput2に置き換えます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9174bc47-d939-3e19-d317-65a19c344e6e.png", width = 70%>

以上でローコードプラグインの埋め込み自体は完了です。
次にこの実装した値を出力できるように設定していきます。

+ 先程のボタンのOnselectプロパティでSet関数により変数(result)を設定することで、値を保持できるように設定します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9aad44fa-30cf-8ded-5326-838e97014b39.png", width = 70%>

出力フォームを選択し、Textプロパティのfx欄に先程設定した変数(result)とインスタントローコードプラグインの出力パラメータ(z)を用いて次のように記載します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/02736759-5887-36fb-4868-0879b9d48bdf.png" , width = 70%>

<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/fbdef860-914b-fbcf-f159-3bd37071a939.png", width = 20%>

キャンバスアプリ側での設定もこれで完了です。

試しにキャンバスアプリを再生し、入力フォームにそれぞれ数値(4と5)を入力して、ボタンを押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/2b799977-03bd-b7e6-a0f7-bc9c63cbcc1a.png", width = 70%>

上記のように9が出力されましたので機能として実装できることが確認できました。

次に、キャンバスアプリ上でスクリーン内だけでなく、Detaverseのデータ操作上でもできるか使用してみます。
+ 別のスクリーンを用意し、そこにボタンを設定し、Onseletプロパティ選択します。
+ fx欄にInstant Plug-in Sample02のローコードプラグインのコピーを貼り付けます。
+ 今回はxのValueに"動作確認"、yのValueに"できました。"と書き換えます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f45da209-53d1-83da-647d-8c26c9464be8.png", width = 70%>

キャンバスアプリを再生してボタンを押下します。
Power Appsのテーブルから「Dataverse Acceleratorお試し用テーブル」を確認します。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/39f7f924-d3a6-346f-6af4-5d50db62de9d.png" , width = 70%>

上図から1番目のレコードの「Dataverse Accelerator動作確認」列の値が「未確認」から「動作確認できました。」に変更されてるのが確認できます。

Instant Plug-in Sample02は一番上のレコードの「Dataverse Accelerator動作確認」列の変更する機能なので、キャンバスアプリで利用できることが確認できました。

次に同じボタンのOnselectプロパティのfx欄に今度はInstant Plug-in Sample03のローコードプラグインを貼り付けますが、今回は下の図のようにエラーが出ます。これはInstant Plug-in Sample03の設定でScopeの設定がエンティティを選択して、ローコードプラグインをテーブルと関連付けた場合に生じます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/81defd6e-c46a-982e-4ccb-ad80892147c7.png", width = 70%>

テーブルを関連付けたローコードプラグインを使用する場合は以下のような設定を行います。

1\. 左メニューからデータを選択後、「データソースを追加」を押下し、該当するテーブルを選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/ffd99e67-c10e-ad60-ebcc-68a5be737de5.png" , width = 30%> 

2\. ボタンのOnselectプロパティに戻り、Environmentを該当するテーブル名に変えます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/c09c4bae-c069-6346-cbae-6f593ecbec48.png", width = 70%>

3\.該当するテーブルのレコードの内どれか一つを選択し、その固有IDを上記のように入力パラメータの前に設定します。今回はDataverse Acceleratorお試しテーブルの二番目のレコードIDを使用してみます。
※xのValueとyのValueについては先程のInstant Plug-in Sample02の実装の時と同じ入力値を与えています。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/112db786-cec0-ac92-389d-d632409af7b7.png" , width = 70%>

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/bf554439-4cc7-5243-f606-ba66633b93d1.png" , width = 70%> 

キャンバスアプリを再生して、ボタンを押下します。
Power Appsのテーブルから「Dataverse Acceleratorお試し用テーブル」を確認します。

<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f8fe3f75-140c-ed0c-1df2-b9a918427c4d.png", width = 70%>

上図から2番目のレコードの「Dataaverse Accelerator動作確認」列の値が「未確認」から「動作確認できました。」に変更されています。

Instant Plug-in Sample03は指定したレコードの値を変更する機能なので、キャンバスアプリで利用できることが確認できました。

### 2.5 クラウドフロー上でのインスタントローコードプラグインの実装方法及び試用

Power Automateでインスタントローコードプラグインを実装方法について説明します。
今回は[2.4](#24-キャンバスアプリ上でのインスタントローコードプラグインの実装方法及び試用)で使用したInstan Plug-in Sample02とInstant Plug-in Sample03を使用します。

試しにPowet Automateでインスタントフローを作成してみます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/e0123008-4543-c367-b677-13af6d2055c1.png", width = 70%>

アクションを追加してインスタントローコードプラグインの機能を実装していきます。
まずInstant Plug-in Sample02を実装していきます。

+ アクションの追加ボタン（✛）を押下し、Dataverseコネクタの「バインドしていないアクションを実行」を選択します。
Scopeで「グローバル」を設定したプラグインについてはこのアクションを使用します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/17ebb674-0a0e-d56e-ebbc-4370a9b95576.png", width = 70%>

+ アクションの詳細設定画面で、アクション名を選択します。インスタントローコードプラグインの場合「new_作成したプラグインの論理名」となっています。
+ インスタントローコードプラグインに入力パラメータがある場合は、詳細パラメータの「全てを表示」を押下し、それぞれのパラメータに値を入力します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/60da8407-4632-a779-406a-3aa5e0795f67.png", width = 60%>

以上で実装完了です。
このフローを保存及びテストして、Power AppsからDataverse Acceleratorお試し用テーブルを確認します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/ec866c77-dbd0-ab83-9e46-11a2982c4b85.png" , width = 70%>

上図のように最初のレコードが変更されているのが確認できたので、フローに実装できることが確認できました。

次にInstant Plug-in Sample03を実装していきます。
Scopeで「エンティティ」を選択した場合は、「バインド済みアクションを実行する」を選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/034c192b-ab29-0caf-aa9d-5be854755ceb.png" ,width = 70%>

+ 使用するプラグインの関連付けられたテーブル名を選択します。
+ アクション名、入力パラメータについては先程と同じように設定します。
+ 行IDは関連付けたテーブル内のレコードを選択してそのレコードの固有IDを入力します。
今回は、キャンバスアプリと同様二番目のレコードのIDを使用します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/59f0a232-b86a-1082-afef-e21f9e5f990b.png", width = 60%>

以上で実装完了です。
こちらのフローについても保存及びテストして、Power AppsからDataverse Acceleratorお試し用テーブルを確認します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f75eed8d-0b2a-af12-ccf7-ef0d95a07eee.png" , width = 70%>

上図の通り、二番目のレコードの更新が確認できたので、フローに実装できることが確認できました。

## 3. 自動ローコードプラグイン
本項ではDataverse Accelerator Appで作成できるローコードプラグインの内、自動ローコードプラグインについて概要、作成、実装方法について主に紹介します。

### 3.1 自動ローコードプラグインの概要
自動ローコードプラグインはレコードの作成、更新、削除をトリガーとして処理を加える機能です。

自動ローコードプラグインでは実行する処理をトリガーアクションが行われる直前か直後か選択することができます。

### 3.2 自動ローコードプラグインの作成方法
自動ローコードプラグインの作成方法について説明します。

自動ローコードプラグインの作成画面へは次の2通りの方法で移動できます。

①. Dataverse Accelerator App初期画面から「Create automated Plug-in」を押下します。
②. 左上の「New plug-in」を押下し、「Automated plug-in」を選択します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/d0e2d0b1-9303-8db2-c80c-0fe1d0e40bd8.png" , width = 70%>

作成画面からインスタンスローコードプラグインの作成に必要な設定をしていきます。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/b79fcb95-2deb-57ed-1ac7-6e22e7589254.png" , width = 70%>

以下、基本的なインスタントローコードプラグイン作成において必要な設定について説明します。
※インスタントローコードプラグインと共通設定である「Display Name」、「Expression」、「Solution」は省略します。

#### Table(必須、編集可)
自動ローコードプラグインの処理が実行されるトリガーの対象となるテーブル（論理名）を選択します。
「admin_Environment」を選択すると、全てのテーブルがトリガーの対象となります。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/1a5608cd-8f31-da83-4d20-71ef2cbd934e.png", width = 30%>

#### Run this plug-in when the row is(必須、編集可)
レコードの作成、更新、削除の三つのアクションの内どれをトリガーにするか選択します。
複数選択することも可能です。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f9b499ed-00f9-5a27-0675-cbde150240cc.png", width = 25%>

#### when should this run（任意、編集可）
プラグインの処理をトリガーアクションの直前に実行する(事前操作)か、直後に実行する（事後操作）か選択します

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/49537dff-6f4b-35a5-360f-cd0da80290b6.png" , width = 20%>

以上の設定を行い、上部の保存を押下後、成功した旨のメッセージが表示されていることを確認します。
自動ローコードプラグインではテスト操作はないため以上で作成完了です。
※インスタントローコードプラグインと同様、接続参照機能を使用して外部サービスのアクションを自動ローコードプラグイン内に実装することが可能です。実装方法はインスタントローコードプラグインの[2.3](#23-インスタントローコードプラグインに外部サービスのアクションを組み込む方法)で紹介した方法と同じです。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/e6132506-6b2b-84a0-9506-849c7ff0da3f.png" , width = 70%>

※自動ローコードプラグインの編集、削除操作についてはインスタントローコードプラグインと同じなので、割愛します。

### 3.3 モデル駆動アプリ上での自動ローコードプラグインの試用
自動ローコードプラグインによる処理が正しく行われているかについてモデル駆動アプリ上で試用してみます。

今回は事前操作する自動ローコードプラグインを用意しました。
以下作成した自動ローコードプラグインの設定です。

表示名：Automated Plug-in Sample01
テーブル：Dataverse Acceleratorお試し用テーブル([2.4](#24-キャンバスアプリ上でのインスタントローコードプラグインの実装方法及び試用)で使用したテーブル)
機能：レコードを作成または更新の際にそのレコードの「Dataverse Accelerator動作確認」列の値を"動作確認できました"に変更する。
事前・事後：事前操作

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/fd80a73e-6393-d039-753c-bd44c5ef378b.png" , width = 70%>

次にモデル駆動型アプリをあらかじめ作成し、以下のような「Dataverse Acceleratorお試し用テーブル」のビューとフォームを用意しておきます。

ビュー画面
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/3b64f999-eba5-437b-b3b1-33b0fae052f6.png", width = 70%>

フォーム画面
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/b9dfbc89-d5b4-d433-2c03-65dc1014bf76.png", width = 70%>

モデル駆動型アプリを再生して、自動ローコードプラグインの処理が正しく実行されているか確認します。
まずビュー画面から「新規」をして、フォーム画面に移りレコードを作成します。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/89371b5f-fa4a-a02f-1230-63bc8c6a1ae1.png" , width = 70%>

フォーム画面でNameにだけ「検証-5」と記入し、画面上部にある「保存して閉じる」を押下してみます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9c2a993e-c8d8-0216-ed63-0c6b81a79528.png" , width = 70%>

ビュー画面に戻ると、新しく作成されたレコードの「Dataverse Accelerator動作確認」列の値が「動作確認できました。」と自動で入力されていることが確認できました。これにより、レコード作成時に自動ローコードプラグインによる処理が行われていることが確認できました。　
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/7e038525-511d-7475-645a-558e40478c4c.png" , width = 70%>

次に、ビュー画面から「Name」列が「検証-3」になっているレコードをチェックし、「編集」を押下します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/455c177d-9577-b553-592b-ff61aa971dcc.png", width = 70%>

更新の場合は入力値を変更する必要があるので、試しに「Dataverse Accelerator動作確認」列の値を「サンプル」に上書きします。

保存して閉じるを押下して、「検証-3」レコードの更新を行ってみます。

<img src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/9b924f62-8a94-6bc1-e573-d8f16cd6e0e9.png", width = 70%>

ビュー画面に戻ると、「検証-3」レコードの「Dataverse Accelerator動作確認」列の値が「動作確認できました。」と自動で入力されていることが確認できました。これにより、レコード更新時に自動ローコードプラグインによる処理が行われていることが確認できました。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/7d175367-6776-c02f-413c-4c5b8395033c.png" , width = 70%> 

したがって、作成した自動ローコードプラグインが正しく機能していることが確認できました。

### 3.4 自動ローコードプラグインとPower Automate、ビジネスルール、列の計算列設定との比較

自動ローコードプラグインはレコードの作成、更新、削除をトリガーとして処理を行うツールですが、Power Platform内でこれらのアクションをトリガーとして処理を行うツールには自動ローコードプラグイン以外にもPower Automate、Dataverseのテーブルから作成できるビジネスルール、テーブル内の列の動作設定で計算列を設定した際に編集できる計算列設定といったものが挙げられます。

Power Automate
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/eda69ad2-dc0f-373e-08b9-1e557b0018d5.png", width = 70%>

ビジネスルール
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/2b6e7645-8357-a7fd-05f8-b3fbfbfda12d.png", width = 70%>

計算処理設定
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f81aedd5-da1e-b2df-1497-c233dd34c05a.png" , width = 70%>

　自動化ローコードプラグインとこれら他のツールとの違いはカスタマイズできる処理や設定の幅広さが挙げられます。例えば、Power Automateではレコードの作成、更新、削除をトリガーとした時、そのトリガーアクション後の機能（事後操作）しか作成できず、また、ビジネスルールや計算列ではレコードの作成及び更新の直前処理(事前操作)の機能しか作成できないのに対して、自動ローコードプラグインではそれらトリガーに対して事前・事後を任意で選択することが可能です。また、接続参照を用いた外部サービスのアクション、レコードの作成や更新の際に特定の列の値に対してエラーの表示や他の列の値の自動入力といったPower Automate、ビジネスルール、計算列で作成できる処理を自動ローコードプラグイン内の処理として作成することも可能なため、それら処理を一つにまとめた自動化ローコードプラグインを作成し、フローの管理をしやすくするといったことも可能です。
　一方で、自動化ローコードプラグインはローコードで記述していくツールであることから、他のノーコードツールよりも作成難易度が高く、簡単な処理しかない場合においては自動ローコードプラグインを作成する必要性は低くなります。そのため、自動化ローコードプラグインを利用するかどうかは実装する機能の難易度や管理のしやすさを考慮したうえで状況に応じて判断していく必要があるかと思います。

## 4. ローコードプラグイン作成・編集の際の注意点及び不具合とそれに対する対処方法
本項ではローコードプラグインの作成及び編集時の注意点や私が確認した不具合とそれに対する対処方法についてまとめましたので、ご確認いただければと思います。※2023年11月16日時点

※これらエラーや不具合は本アプリが更新された場合、修正される可能性もありますので、インスタント及び自動ローコードプラグインの作成手順とは別項目として記載しております。

### 4.1 ローコードプラグインの表示名設定の不具合
ローコードプラグイン作成時に表示名（Display Name）を設定しますが、日本語で入力した場合チェックマークがついても、テストの際にエラーとなり利用することができません。そのため、現時点では日本語は使わないようにしてください。

表示名が日本語名でも表示名にチェックマークと保存に成功のメッセージは表示される。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/847116b9-3caa-6b2e-f66d-06e8e0e3d807.png" , width = 70%>

テスト画面ではエラーが表示される。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/357160d0-b79d-8815-1e72-f3a5024af8c3.png" , width = 70%>

### 4.2 編集時に発生するエラーや注意点
作成済みのローコードプラグインの編集画面を開いた時にいくつかエラーや注意点がありますので説明します。

1. 作成時にはエラー表示されなかった「Expression」内の関数や関数内の因数に対して、エラー表示される場合があります。
使用中のプラグインについては編集時に表示されているようなエラー内容と同じエラーが発生するといったことはなかったため、このエラーに関しては編集時にのみ起きると考えられます。
対処方法については任意の箇所に文字を一つ入力し、その文字を削除するだけで、エラー表示を消すことができます。

2. 自動ローコードプラグイン限定ですが、トリガーアクションの設定について編集前の設定が編集画面では反映されておらず常に編集画面での初期設定が「Created」のみ選択された状態になっております。
そのため、自動ローコードプラグインを更新する際は必ずトリガーアクションの設定について確認し、設定しなおすようにしてください。

編集画面(➀Expression内のエラー、➁編集画面のトリガーアクションの初期設定が常に「Created」)
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/3375c786-f53b-91e2-88ce-973b11fba7da.png" , width = 70%>

### 4.3 作成・編集画面の表示不具合

作成・編集画面を開いた時に正しく表示されない事例をいくつか確認しています。
以下事例と対処方法についてです。

1.  自動ローコードプラグインの事前・事後調査の設定が表示されないことがあります。
こちらの不具合についてはブラウザを更新して、再度作成または編集画面を開くことで解消できます。
左：正常、右：表示されない不具合
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/e8a7c2ec-33f1-0bc0-12ae-f50557985e59.png", width = 70%>
2. 作成済み接続参照の一覧表示画面では本来、「＋New」及び「Reflesh」と表示されている箇所が不具合により、「item1 item2 item3」と表示され、ローコードプラグイン用の接続参照の新規作成や一覧表示の更新が行えないことを確認しております。
基本的に、接続参照を使わない場合や、既に使用したい接続参照が一覧表示されている場合はこの不具合が生じても問題なく、また、接続参照の一覧表示を更新したい場合は接続参照の一覧表示画面からではなくブラウザを更新し、再度作成・編集画面を開くことで解消できます。
ローコードプラグイン用の接続参照を新規作成したい場合は、ブラウザを更新した上で、インスタントローコードプラグインと自動ローコードプラグインの両方の作成・編集画面から接続参照一覧画面を開いてみてください。どちらかのローコードプラグインの接続参照一覧画面で正しく表示されている場合が多く、そこから接続参照の新規作成ができます。
左：正常、右：表示の不具合
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/f6ae4475-dcf2-b87a-9727-4d4bf27911c2.png" , width = 70%>　

### 4.4 外部サービスのアクションを組み込んだローコードプラグインのエラー

本記事ではインスタントローコードプラグインに外部サービスアクションを組み込む方法について紹介しましたが、試しに[2.3](#23-インスタントローコードプラグインに外部サービスのアクションを組み込む方法)で作成したインスタントローコードプラグインを保存してテストしてみたところ、保存には成功しましたが、テスト時にエラーが表示されました。また別の外部サービスのアクション機能を組み込んだローコードプラグインで保存及びテストして試してみても同じようにテスト時にエラーが表示されたため、外部サービスのアクション機能の実際の動作確認については確認できませんでした。

外部サービスアクションを組み込んだローコードプラグイン（保存成功表示）
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/c487aa1f-cd38-6409-1727-898b72a72b1c.png", width = 70%>

テスト時にエラーの表示
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/d59e2c59-edfe-7a34-d49e-a6468653e6cf.png" , width = 70%>

このエラー原因については、Dataverse Acceleratorがプレビュー機能であり、現時点では、ローコードプラグインでの外部サービスのアクション機能について、実際に動作させるところまでは制限している可能性があります。そのため、外部サービスのアクション機能の動作確認についてはDataverse AcceleratorのVersionが更新されるまで確認できない可能性があります。

### 4.5 ローコードプラグインで使用できない関数
ローコードプラグインはPower Fxを使用して処理内容を記述しますが、一部利用できない関数があります。

例として、レコードの更新で使用できるUpdate関数は現在ローコードプラグインではサポートされていないため、Patch関数等で代用する必要があります。

現在サポートされていない関数の詳細については次のリンクを確認いただければと思います。

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/low-code-plug-ins-powerfx

### 4.6 ローコードプラグインを用いてレコードに値を入力する際の注意点

ローコードプラグインの機能としてテーブル内のレコードの作成及び更新の際に、特定の列の値を入力する機能を実装する場合は、その列の動作設定は必ず「シンプル」にしてください。
計算列にした場合、列側で設定した計算列の設定が優先されるため、ローコードプラグインの機能でその列の値を反映させることができないことを確認しています。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584418/3be1409f-42ef-ffe2-5273-fbd4fc174e10.png" , width = 30%>