ServiceNow の JavaScript 文字列のエスケープ文字Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ServiceNow プラットフォームで JavaScript 文字列内の特殊文字を処理する方法について説明します。特定の文字は、スクリプトで予期しない、時には特定が困難なエラーを生成する可能性があります。これらの JavaScript 文字列は、ビジネスルール、ワークフロースクリプト、ACL レコード、およびアプリケーションの他の領域など、さまざまなスクリプトオブジェクト内で使用できます。特殊文字は、コマンドに含まれる場合に JavaScript 言語に対して特定の意味を持つため、問題を引き起こします。 ServiceNow スクリプトオブジェクト内の文字列でこれらの文字を使用するには、文字をエスケープする必要があります。エスケープとは、文字の前にバックスラッシュ () を付けて、JavaScript コンパイラに次の文字を通常の方法で解釈するのではなく、文字どおりに扱うように指示することを意味します。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } サポートされているすべてのリリース Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 方法 エスケープが必要な主な文字は次の 3 つです: シングルクォート (')ダブルクォート (")バックスラッシュ (\) シングルクォートとダブルクォート文字は JavaScript で文字列を開始および終了するために使用され、バックスラッシュ文字はエスケープ文字そのものです。 これらの文字をエスケープするには、文字列内で文字どおりに扱う必要がある文字の前にバックスラッシュ (\) を配置します: \' — シングルクォート文字の使用を可能にします。\" — ダブルクォート文字の使用を可能にします。\\ — バックスラッシュ文字の文字どおりの使用を可能にします。 例 次の 2 つの JavaScript ステートメントは、文字列内の特殊文字が原因でそれぞれエラーを生成します。 例 1:ダブルクォートで囲まれた文字列内のダブルクォート var userName = "Jerome "The Race" Anderson"; このステートメントは次のエラーを生成します: Javascript compiler exception: missing ; before statement (null.null.script; line 1) in: var userName = "Jerome "The Race" Anderson"; 例 2:シングルクォートで囲まれた文字列内のシングルクォート gs.log('Please retry the operation, the expected button wasn't found on the form.'); このステートメントは次のエラーを生成します: Javascript compiler exception: missing ) after argument list (null.null.script; line 1) in: gs.log('Please retry the operation, the expected button wasn't found on the form.'); 例 3:ファイルパス内のバックスラッシュ 次のステートメントは必ずしもエラーを生成するわけではありませんが、期待される結果を生成しません。 var filepath = "\bzavr\extra\open\files\config.ini"; メモリに格納されている filepath 変数には、次の文字列が含まれています: \bzavrextraopenilesconfig.ini 修正された例 これらの問題を修正するには、文字列内の各特殊文字の前に JavaScript バックスラッシュエスケープ文字を付けます: var userName = "Jerome "The Race" Anderson"; gs.log('Please retry the operation, the expected button wasn't found on the form.'); var filepath = "\\bzavr\extra\open\files\config.ini"; 追加情報 バックスラッシュ文字は、JavaScript 文字列内の特殊な印刷不可能文字を表すこともできます: Escaped characterRepresentation\bバックスペース\fフォームフィード\n改行\rキャリッジリターン\t水平タブ\v垂直タブ JavaScript 文字列に印刷不可能文字を含めるには、エスケープされた文字を追加します。(つまり、改行を含めるには \n) たとえば、次のステートメント: var textData = "This is a test string.\n\rNext Line.\tShifted line."; 印刷すると、次のような出力が生成されます: This is a test string.Next Line. Shifted line.