shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】「ログイン名:パスワード」をBase64エンコードの事例

Power Queryで「ログイン名:パスワード」をBase64エンコードの事例です。Power Query M 言語のBinary.FromText関数では実現できず、Binary.ToText関数とText.ToBinary関数を組み合わせる必要があります。

内容:

なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2406)です。

アウトプットイメージ

「列1」フィールドについて、カスタム列に次の数式を入力し、Base64エンコードをしている。

Binary.ToText(Text.ToBinary([列1],TextEncoding.Utf8),BinaryEncoding.Base64)

Binary.ToText(Text.ToBinary([列1],TextEncoding.Utf8),BinaryEncoding.Base64)の式を入力

Base64エンコードの事例

事例の説明

数式内側のText.ToBinaryについて

Text.ToBinaryは、

指定された encoding を使用して、指定されたテキスト値 (text) をバイナリ値にエンコードします

出典:  Text.ToBinary - PowerQuery M | Microsoft Learn

ということで、事例の数式の内側は「列1」フィールドをUtf8でエンコードしています。

エンコードの種類は、以下です。

learn.microsoft.com

数式外側のBinary.ToTextについて

Binary.ToTextは、

数値のバイナリ リスト binary をテキスト値に変換した結果を返します。 必要に応じて、生成されるテキスト値に使用されるエンコードを示すために、encoding を指定することができます。encoding には次の BinaryEncoding 値を使用できます。

BinaryEncoding.Base64: Base 64 エンコード
BinaryEncoding.Hex: 16 進数エンコード

出典: Binary.ToText - PowerQuery M | Microsoft Learn

ということで、これでバイナリ値からBase 64 エンコードをしています。

以上で、変換ができました。

(注意点)Binary.FromTextでは変換できなかった

Binary.FromTextは、

テキスト値 text をバイナリ (number のリスト) に変換した結果を返します。 encoding は、テキスト値で使用されるエンコードを示すために指定できます。 次の BinaryEncoding 値を encoding に使用できます。

出典: Binary.FromText - PowerQuery M | Microsoft Learn

とあったが、テキスト値は”テキスト形式で表示されたバイナリ値”ということみたい。よって、Binary.ToText関数とText.ToBinary関数を組み合わせる必要がありました。

以上、PowerQueryで、「ログイン名:パスワード」をBase64エンコードの事例でした。