PowerApps|JavaScriptでデータを追加する方法~createRecord~
PowerAppsのJavaScriptを使って、
データを追加したいと思う時があると思います。
ボタンの中に組み込んだり、データの更新時に動かしたりなど。。。
こんなときには、JavaScriptをPowerAppsに組み込んでこそ、動かすことができます。
今回は、PowerAppsで組み込むJavaScriptで特定のテーブルにデータを追加する方法について紹介していきます。
実際に私は、それらを実装して運用していますので、動作は保証させていただきます。
目次(クリックで読みたい部分にジャンプできます)
CreateRecordの基本〜JavaScriptからレコードを追加する〜
createRecordは、
Xrm.WebApiというPowerAppsが提供しているAPIを使用します。
基本的な書き方については以下のように書きます。
let entityLogicalName = "テーブルの論理名"
let data = {
"列の論理名":"追加したいデータ"
}//追加したいデータを入れる。
Xrm.WebApi.online.createRecord(entityLogicalName, data).then(
function success(result) {
var newEntityId = result.id; // 作成されたレコードのID
// 成功時の処理
},
function error(error) {
// エラー時の処理
}
);
引数は2つあり、テーブルの論理名と追加したいデータです。
テーブルの論理名には、
PowerAppsであなたがデータを追加したいテーブルの論理名を入れます。
dataには、追加したいデータを入れます。
テーブルの中で必須の項目になっている部分は、
必ず入れる必要があります。入れないと、エラーが吐かれてしまうので、気をつけてください。
dataには、列の論理名と追加したいデータをオブジェクト型で格納しましょう。
検索型の列にデータを追加したい場合
普通にレコードを追加する場合には、上記のコードで十分ですが、
データの中には、「検索」型の列がある場合があります。
そこにデータを追加する場合には、一工夫が必要ですので、ここからはその書き方について紹介します。
変更する部分は、変数dataの構造です。
準備するのは以下の3つです。
- 検索列の論理名
- 検索列と繋がっているテーブルの論理名
- 検索列と繋げたいレコードのID
「検索列と繋げたいレコードのID」は
検索列と繋がっているテーブル内のどのレコードと紐づけるかを決める必要があるので、紐付け対レコードのIDを指定します。
IDは、テーブル名と同じ名前の列に書いてあります。
let entityName = "検索列の論理名"
let entityType = "検索列と繋がっているテーブルの論理名"
let targetRecoedId = "検索列と繋げたいレコードのID"
let data = {
entityName + "@odata.bind" : "/" + entityType + "s(" + targetRecoedId + ")"
}
//以降は同様
このようにdataを指定してあげることで、検索列の紐づくレコードを設定してあげることができます。
検索列の紐づくIDを取得するには、どうすれば良いか。
必要なIDはいくつかありますが、それらが可変になる場合もあると思います。
その場合には、RetriveRecord と MultipleRetriveRecordという関数を使用します。
以下の記事で紹介していますので、参考にしてみてください。
まとめ
今回は、PowerAppsの組み込みJavaScriptでレコードを追加する方法について紹介しました。
レコードの追加、更新、削除、取得などの処理を行えるようになることで、とても組み込みJavaScriptを使用したPowerAppsの実装の幅が広がります。
ぜひ活用してみてくださいね。では、また。