初めてのAzureFunctions作成してみた (JSON Arrayのソート)
はじめに
個人の記録的な投稿であることをご容赦ください。
Power Automateを利用していると、配列のソート操作がないことにしばしば悩まされます。
簡易的なソートであればPower Automateの枠内で対応できますが、ちゃんとした(?)ソートではないので、制限が多いです。
そんなちょっとした不満を解消する手段として、Azure Functionsを使ってみたので、その記録です。
つくる/つくった
参考にしたのは公式のHello worldです。
(Ref. https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-azure-function )
得意な言語というのも特にないので、javascriptで始めました。
今回作るものは、
1. JSONの配列、プロパティ名を入力として
2. 対象のプロパティでソートされた配列を返す
というだけのシンプルなものです。
なお、ちょっとした都合により、JSON配列はURLにパラメータとして含めることで受け渡しています。
普通にやるならリクエストのBodyに入れるんでしょう。
想定するのは以下のようなGETのリクエストです。
https://abcdefg.azurewebsites.net/api/HttpExample?src=<JSON配列のURL encodeした値>&prop=<ソートしたいプロパティ>
できたFunctionsはindex.jsを少しだけHello Worldから変更しただけのものです。
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
function sortByProperty(property) {
return function (a, b) {
if (a[property] > b[property])
return 1;
else if (a[property] < b[property])
return -1;
return 0;
}
}
if (req.query.src && req.query.prop) {
context.res = {
// status: 200, /* Defaults to 200 */
body: JSON.parse(decodeURI(req.query.src)).sort(sortByProperty(req.query.prop)),
headers: {
'Content-Type': 'application/json'
}
};
}
else {
context.res = {
status: 400,
body: "Please pass a name on the query string or in the request body"
};
}
};
sortByPropertyでリクエストのパラメータにあるpropを参照します。ソートする対象は、エンコードされているので、まずdecodeURIで文字列に戻して、さらにJSONとして扱うためにJSON.parseしました。
おわり, 動かした結果
unsorted がもとの入力になります。(画像右側)
これを、HTTPアクション (Azure Functionsよびだし) を通すことで、"name"でソートされた結果を得ることができました。
このような感じで、サービスに備わっていない機能を少しだけ、とても簡単なコードで補完できるのはとても良いですね。
次はバインディングを利用して、OneDriveやSharePointに保存されたファイルへのアクセスを試してみたいと思います。
Author And Source
この問題について(初めてのAzureFunctions作成してみた (JSON Arrayのソート)), 我々は、より多くの情報をここで見つけました https://qiita.com/h-nagao/items/871d49e1658c5669fec7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .