見出し画像

Power Appsのススメ 〜その9〜 ひらがな<=>カタカナ変換

Power Appsの文字列関数は半角全角問わず対応しているので特に困ることはないのですが、日本語特有の機能としてよくある「ひらがな・カタカナ間の変換」はさすがに無いです。

ですので今回は、いくつかの関数のチュートリアルついでに変換関数を作ってみることにしました。

まずは使用した関数を紹介します。

AddColumns関数

指定のテーブルに、カラムを追加する関数です。

書式は以下の通りです。

AddColumns(テーブル名, カラム名, 値 [, ...])

既にテーブルに存在するカラム名は指定できません。

値は全てのレコードに対して設定されるため、同一の値か、もしくはThisRecordやたのテーブルを参照して値を指定することも可能です。

例 myTableに、pointというカラムを追加し、それぞれの値をno*100とします。
ClearCollect(myTable, {no: 1, age:20, name: "you"}, {no: 2, age: 30, name: "me"});
AddColumns(myTable, "point", ThisRecord.no * 100);

Sequence関数

数値を値とする「Value」というカラム名を持ったテーブルを作成します。

引数には作成するレコード数を指定します。

作成可能なレコード数は0〜50000までです。

Valueの値はデフォルトで1からとなりますが、指定することもできます。

書式は

Sequence(レコード数,初期値)

となります。

例 0〜9までの10個のレコードを持ったテーブルを作成する
Sequence(10, 0)

LookUp関数

テーブルから指定した条件にマッチする最初のレコードを抽出します。

書式は以下のとおりです。

LookUp(テーブル名,条件 [,絞り込み条件])

条件にはテーブルのカラム名を利用できます。

3つ目の引数を指定することで特定のカラムの値を抽出できます。

指定しない場合はレコード全体を返します。

例 myTableのageカラムが30のレコードを1つ返す
LookUp(myTable, age=30)

Table関数

テーブルを作成する関数です。

Table(レコード [,...])

という書式になります。

レコードは他のテーブルから参照するか、{}の中にカラム名:値という組み合わせを,で区切って直接指定します。

Concat関数

テーブルの指定したカラムの値を全て文字列として連結して返す関数です。

Concat(テーブル名, 数式 [, 区切り文字]

という書式となります。

数式にはレコード内のカラム名や条件を指定します。

区切り文字はオプションで、数式で指定したカラムの後ろにレコード毎に付加されます。

例 myTableのnameカラムの内容を","で連結した文字列を返す
Concat(myTable, name, ",")

Mid関数

文字列を指定の位置から指定の長さだけ切り出す関数です。

Mid(文字列,開始位置,長さ)

文字列の先頭は1です。

例 指定した文字列の、2文字目から2文字分抽出(この場合、"いう")
Mid("あいうえお",2,2)

カタカナ変換の実装

実際の実装コードはこちらのブログに記載のとおりです。

ちょっと力技ではあるのですが、文字コードの計算をするにも少々無理があるので、こういった形になりました。

Sequenceで変換文字列の長さ分のレコードを持つテーブルを作成し、そこにAddColumnsで1文字ずつカタカナに変換した文字をKatakanaというカラムに入れていきます。

カタカナ変換は、Tablehkというカラムにひらがなとカタカナをそれぞれセットしたテーぶりを作成して、変換文字列をSequenceに合わせて変化するValueを元にMidで1文字切り出してLookUpで切り出したひらがなと同じカラムhを持つレコードを抽出してカラムkの内容を取得する、ということをしています。

最後に作成されたテーブルのKatakanaカラムを全てConcatで結合して変換後の文字列の出来上がりとなります。

ひらがな変換をする場合はLookUphkを入れ替えればOKです。

まとめ

今回紹介した関数のうち、特にSequence関数はループ処理でも利用することになるので、覚えておいて損はないと思います。

また、AddColumnsSequenceTableLookUpの組み合わせは他の場面でも使えそうだなと思ってます。

本来はテーブルやコレクションの処理に利用するための関数ですが、こういった変換処理にも利用できるので、これも頭に入れておくと良いと思います。

この記事が気に入ったらサポートをしてみませんか?