こんにちは。遠藤です。
今回は、Power Automateを用いてMicrosoft Formsへの入力内容を全角から半角に変換する方法をご紹介いたします。少々荒業ではありますが、Power Automate初心者にはわかりやすい方法かなと思いますのでよければ参考にしてください。
テキスト入力フォームの制限について
Microsoft Formsで設定できる質問の種類として、「選択肢」「テキスト」「評価」「日付」のほか「ランキング」や「リッカート」などがあります。多くの人に対して簡単なアンケートを実施する際、このような機能が用意されているのは非常に便利でありがたいです。回答に応じて後日連絡が必要な場合など、「テキスト」フォームを用いて電話番号やメールアドレスを入力してもらうこともあると思います。Excelに入力されたデータを集積して管理するなんてことも少なくはないでしょう。
しかし、Microsoft Formsの「テキスト」フォームでは、「数値」入力の制限は可能なものの、半角入力など入力可能な文字をGUIから制限することができません。これでは、回答者が誤って全角入力をするのを事前に防ぐことができず、逐一Excel側で一括変換する必要も出てくるでしょう。




そこで、同じくMicrosoftが提供しているPower Automateを利用して、FormsからExcelにデータを転記する前に全角から半角に変換するフローを作成しようと思います。変換用の辞書をjson形式で作って参照して……なんて方法もあるのですが、今回は初心者でも簡単にできるreplace関数を用いた方法をご紹介します。少々根気がいる作業ですが、少しでも参考になればと思います。
Power Automateのフロー作成
まずは、「自動化したクラウドフロー」からフローを作成します。フローの名前はお好きなもので大丈夫です。フローのトリガーをMicrosoft Formsの「新しい応答が送信されるとき」に設定し、中身を作っていきます。
- 新しい応答が送信されるとき(Microsoft Forms)
- フォームIDを設定します。こちらは、回答してもらうFormsを選択すればOKです。
- 応答の詳細を取得する(Microsoft Forms)
- 「アクションの追加」から操作を選択します。
- フォームIDは同様に回答してもらうFormsを選択し、応答IDは動的なコンテンツから「新しい応答が送信されるとき」の「応答ID」を選択すればOKです。
- スコープ
- 「アクションの追加」から操作を選択します。
- こちらはなくても成立するものですが、あるとフロー全体が非常に見やすくなるのでおすすめです。
- 表に行を追加(Excel Online)
- 「アクションの追加」から操作を選択します。
- 今回はExcelを指定していますが、全角から半角に変換したテキストを出力したい先を自由に選択してもらえればOKです。

全角から半角に変換(replace関数)
先ほど作成したスコープの中で、実際に変換を実施する部分を作っていきます。まずは、「アクションの追加」から「データ操作」の「作成」を選択します。「組み込み」タブから辿ると早く見つけられます。
「作成」の入力に「式」を入力します。「式」はポップアップから選択できます。入力した文字列を指定した文字列に置き換える関数としてreplace関数があるので、そちらを利用します。replace(text, oldText, newText)のtext部分に取り扱う文字列、oldText部分に変換対象の文字列、newText部分にoldTextの内容を変換したい文字列を指定します。

今回、置き換えたい文字列はFormsに入力されたメールアドレスなので、replace関数の()内にカーソルを持っていき、そのうえで「動的なコンテンツ」を選択します。動的なコンテンツの中からFormsの質問項目(メールアドレスの入力を求める質問項目)を選択し、text部分はOKです。
メールアドレスの入力時に誤って全角入力してしまう可能性がある文字列は、数字・アルファベット・記号です。以下の写真では、0(数字の全角ゼロ)をoldText部分に、0(数字の半角ゼロ)をnewText部分に入力しています。このとき、それぞれをシングルクォーテーションで囲うのを忘れないようにしてください。
これで、0(全角ゼロ)から0(半角ゼロ)への変換が可能になりました。

以降、同様の作業を繰り返します。ただし、Text部分に指定するのは一段階前に「作成」した文字列です。

これをひたすら繰り返していくと、”作成”という名前の「動的なコンテンツ」が増え続けてどれがどれだかわからなくなってしまうので、各アクションのメニューから適宜「名前の変更」を行うのがよいと思います。
すべて作成し終えたら、「表に行を追加」の項目を埋めます。このとき、Excel側で事前にテーブル設定をしておく必要があるので注意です。シート・テーブルを指定し、それぞれの列の項目を入力したい内容で埋めます。このとき、メールアドレスは最終的に変換された状態のものを選択しましょう。

個人的にわかりやすくするために設定しているだけなので、必須ではありません。
フロー自体はこの工程で終了です。後々見てもどのアクションが何なのかわかりやすいように、「名前の変更を」しておくと良いでしょう。

このフローをオフにした状態・オンにした状態それぞれで、”test@test.com”とすべて全角のメールアドレスをフォームへ入力してみます。
Excelの中身を見ると、無事に全角→半角の変換ができているのが確認できました。

受付IDが3:フローをオンにした状態
めちゃめちゃ地道な作業ではありますが、フロー自体は1秒程度で実行可能なので、入力されたテキストの変換をしたい場合の参考にしてみてください。