【Dynamics】WebAPIから操作(Action)を実行する
WebAPIで操作(Action)を実行する方法のメモ。
今回は営業案件をコピーする操作を作成し、その操作をWebAPIから実行します。
①まず操作を作成します。イメージは以下のような感じです。
②この作成した操作を実行するスクリプトを作成します。
var ActionFromJsSample = (function () { return { CopyAnken: function () { var id = Xrm.Page.data.entity.getId().replace("{", "").replace("}", ""); ActionFromJsSample.ExecuteAction("opportunities", id, "Microsoft.Dynamics.CRM.cc_OpportuinityCopy") .then(function (result) { var name = "opportunity"; var id = result.opportunityid; var windowOptions = { openInNewWindow: true }; Xrm.Utility.openEntityForm(name, id, null, windowOptions); }) .catch(function (error) { Xrm.Utility.alertDialog(error); }); }, ExecuteAction: function (entitySetName, id, query) { return new Promise(function (resolve, reject) { var req = new XMLHttpRequest(); req.open("POST", encodeURI("/api/data/v8.2/" + entitySetName + "(" + id + ")/" + query), true); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.onreadystatechange = function () { if (this.readyState == 4 /* complete */) { req.onreadystatechange = null; if (this.status >= 200 || this.status <= 204) { resolve(JSON.parse(this.responseText)); } else { reject(this.responseText); } } }; req.send(); }); } }; })();
③実行結果
コピー元の画面
実行後の画面
ちゃんとコピーされていることが確認できました。