エスケープ関数 ​

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

エスケープ関数を使用すると、クエリ、URL、マークアップドキュメント、CSV行などの特定の形式に値を安全に埋め込めます。

文字列全体ではなく値をエスケープする

各値は挿入する前にエスケープしてください。完成した文字列はエスケープしないでください。完成した文字列をエスケープすると有効な構文が変わる可能性があり、エスケープを省略するとインジェクションを許す可能性があります。

text
f"SELECT Id FROM Account WHERE Name = '{escape_for_soql(_.name)}'"

引用符はクエリ構文の一部です。その間の値だけをエスケープします。

機能の提供状況

WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。

クエリ言語 ​

クエリに直接挿入されたインバウンドデータは、意図しない構文を持ち込む可能性があります。以下の関数は値をエスケープし、クエリエンジンが値をコードではなくデータとして扱うようにします。

escape_for_soql ​

SalesforceのSOQL文字列リテラル用に値をエスケープします。'と\をエスケープします。

text
escape_for_soql(value)
パラメーター説明
valueエスケープする値。
SOQL用にアポストロフィをエスケープ

次の例では、SOQL文字列リテラル用にアポストロフィをエスケープします。

Formula

text
escape_for_soql("O'Brien")

出力

text
O\'Brien

escape_for_odata ​

各シングルクォートを二重にすることで、ODataフィルター文字列リテラル用に値をエスケープします。 ODataでは、バックスラッシュエスケープではなく二重引用符が想定されます。

text
escape_for_odata(value)
パラメーター説明
valueエスケープする値。
OData用にアポストロフィをエスケープ

次の例では、ODataフィルター文字列リテラル用にアポストロフィをエスケープします。

Formula

text
escape_for_odata("O'Brien")

出力

text
O''Brien

escape_for_regex ​

正規表現のメタ文字をエスケープし、パターンが文字列をリテラルとして一致させるようにします。

データからパターンを作成する場合は常に使用してください。エスケープしない場合、.または*を含む値によってパターンの動作が変わる可能性があります。

text
escape_for_regex(value)
パラメーター説明
valueエスケープする値。
正規表現のメタ文字をエスケープ

次の例では、文字列内の正規表現メタ文字をエスケープします。

Formula

text
escape_for_regex('a.b*c')

出力

text
a\.b\*c

マークアップ ​

以下の関数は、HTMLまたはXMLマークアップ用に値をエスケープします。

escape_for_html ​

HTMLテキストまたは属性用に値をエスケープします。 &、<、>、"、'、および/をエスケープします。

text
escape_for_html(value)
パラメーター説明
valueエスケープする値。
HTMLマークアップ文字をエスケープ

次の例では、HTML文字列内のマークアップ文字をエスケープします。

Formula

text
escape_for_html('<b>Tom & Jerry</b>')

出力

text
&lt;b&gt;Tom &amp; Jerry&lt;&#x2F;b&gt;

escape_for_xml ​

XMLテキストまたは属性用に値をエスケープし、XML 1.0で不正なコードポイントを削除します。

これらのコードポイントを削除すると、ソースシステムの制御文字によってパーサーが処理できないXMLが生成されるのを防げます。

text
escape_for_xml(value)
パラメーター説明
valueエスケープする値。
XMLマークアップ文字をエスケープ

次の例では、XML文字列内のマークアップ文字をエスケープします。

Formula

text
escape_for_xml('<tag> & more')

出力

text
&lt;tag&gt; &amp; more

データ形式 ​

以下の関数は、特定のデータ形式またはコード形式用に値をエスケープします。

escape_for_csv ​

CSVフィールド用に値をエスケープし、必要に応じてフィールドを引用符で囲み、内部の引用符を二重にすることでRFC 4180に従います。

CSV Formulaインジェクションを防ぐには、'safe_formulas'を渡します。スプレッドシートアプリケーションは、=、+、-、または@で始まるフィールドをFormulaとして扱うため、信頼できないソースからの値は、誰かがファイルを開いたときに実行される可能性があります。このオプションは、そのようなフィールドの先頭にアポストロフィを付加します。

text
escape_for_csv(value, 'safe_formulas')
パラメーター説明
valueエスケープする値。
'safe_formulas'任意です。先頭のFormula文字も無効化するには、このパラメーターを渡します。
カンマを含むフィールドを引用符で囲む

次の例では、カンマを含むCSVフィールドを引用符で囲みます。

Formula

text
escape_for_csv('Smith, Josh')

出力

text
"Smith, Josh"
先頭のFormula文字を無効化

次の例では、'safe_formulas'を使用して先頭のFormula文字を無効化します。

Formula

text
escape_for_csv('=1+1', 'safe_formulas')

出力

text
"'=1+1"

人が開くものにはSAFE_FORMULASを使用する

人がスプレッドシートアプリケーションでCSVを開く場合は、'safe_formulas'を渡します。スプレッドシートのFormulaを評価しないマシン間処理では、このオプションは不要です。

escape_for_json_string ​

周囲の引用符を追加せずに、JSON文字列内に埋め込む値をエスケープします。

JSONテキストを手動で組み立てる場合に使用します。代わりに値全体をシリアライズするには、全体のエスケープを処理するto_jsonを使用します。

text
escape_for_json_string(value)
パラメーター説明
valueエスケープする値。
JSON文字列用に引用符をエスケープ

次の例では、JSON文字列内に埋め込むためにダブルクォートをエスケープします。

Formula

text
escape_for_json_string('He said "hi"')

出力

text
He said \"hi\"

escape_for_javascript ​

周囲の引用符なしで、JavaScript文字列リテラル内に埋め込む値をエスケープします。

text
escape_for_javascript(value)
パラメーター説明
valueエスケープする値。
JavaScript用にアポストロフィをエスケープ

次の例では、JavaScript文字列リテラル用にアポストロフィをエスケープします。

Formula

text
escape_for_javascript("O'Brien")

出力

text
O\'Brien

URLとクエリ文字列 ​

これら3つの関連関数は、スペースの扱いが異なります。必要なURL形式に一致する関数を選択してください。

機能スペースの変換先用途
escape_for_url%20RFC 3986で定義される文字列全体
uri_encode_www_form_component%20URLの1つのコンポーネント
uri_encode_www_form+フォームエンコードされたクエリ文字列全体

escape_for_url ​

RFC 3986で定義されるように文字列をパーセントエンコードします。

text
escape_for_url(value)
パラメーター説明
valueエンコードする値。
文字列全体をパーセントエンコード

次の例では、RFC 3986で定義されるように文字列全体をパーセントエンコードします。

Formula

text
escape_for_url('name=Kalani Park&x=1')

出力

text
name%3DKalani%20Park%26x%3D1

uri_encode_www_form_component ​

単一のURIコンポーネントをパーセントエンコードします。予約されていない文字は変更されずに渡されます。

text
uri_encode_www_form_component(value)
パラメーター説明
valueエンコードするコンポーネント。
単一のコンポーネントをパーセントエンコード

次の例では、単一のURIコンポーネントをパーセントエンコードします。

Formula

text
uri_encode_www_form_component('Kalani Park')

出力

text
Kalani%20Park

uri_decode_www_form_component ​

パーセントエンコードされたURIコンポーネントをデコードします。

text
uri_decode_www_form_component(value)
パラメーター説明
valueデコードするコンポーネント。
パーセントエンコードされたコンポーネントをデコード

次の例では、パーセントエンコードされたURIコンポーネントをデコードします。

Formula

text
uri_decode_www_form_component('Kalani%20Park')

出力

text
Kalani Park

uri_encode_www_form ​

Mapをapplication/x-www-form-urlencodedクエリ文字列としてエンコードします。スペースは+になります。

text
uri_encode_www_form(map, options)
パラメーター説明
mapパラメーターのマップ。
optionsdialectを指定するオプションのマップ。 'whatwg'はリストに対してキーを繰り返し、'rack'はkey[]を書き込みます。
マップをクエリ文字列としてエンコード

次の例では、マップをフォームエンコードされたクエリ文字列としてエンコードします。

Formula

text
uri_encode_www_form({status: 'open', q: 'blue widget'})

出力

text
status=open&q=blue+widget

uri_decode_www_form ​

クエリ文字列をMapにデコードします。 +はスペースになります。

text
uri_decode_www_form(text, options)
パラメーター説明
テキストデコードするクエリ文字列。
optionsデコードを制御するオプションのマップ。
  • collect_duplicates: trueの場合、繰り返されたキーをリストに収集します。
  • dialect: 'rack'はkey[]配列を読み取ります。 'whatwg'はキーを不透明として扱います。
クエリ文字列をマップにデコード

次の例では、フォームエンコードされたクエリ文字列をマップにデコードします。

Formula

text
uri_decode_www_form('status=open&q=blue+widget')

出力

text
{status: "open", q: "blue widget"}

ユースケース: フィルターされたAPIリクエストを作成する ​

インバウンドデータの検索語句には、スペースや句読点が含まれることがあります。文字列を連結する代わりに、パラメーターをマップとしてエンコードして、各値をエスケープし、区切り文字を保持します。

入力

json
{
  "status": "open",
  "search": "blue widget & more"
}

Formula

text
f"/api/v2/orders?{uri_encode_www_form({status: _.status, q: _.search})}"

出力

json
"/api/v2/orders?status=open&q=blue+widget+%26+more"

uri_encode_www_formは検索語句内の&を%26としてエンコードするため、パラメーター区切り文字と誤認されません。また、2つのパラメーターを実際に区切る&はそのまま残します。

最終更新日: