LoginSignup
3
2

More than 3 years have passed since last update.

初めてのAzureFunctions作成してみた (JSON Arrayのソート)

Posted at

はじめに

個人の記録的な投稿であることをご容赦ください。
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から変更しただけのものです。

index.js
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"でソートされた結果を得ることができました。
image.png

このような感じで、サービスに備わっていない機能を少しだけ、とても簡単なコードで補完できるのはとても良いですね。
次はバインディングを利用して、OneDriveやSharePointに保存されたファイルへのアクセスを試してみたいと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2