Salesforceの活用:SUBSTITUTE関数で全角を半角にしよう!
みなさんこんにちは。
日中はまだ暖かい日が続きますが、夜は寒くなってきましたね。どうもNです。
日頃から営業部の支援業務としてSalesforceを触ることが多いのですが、今回は実際に対応した、オブジェクト間での「半角変換」についてシェアしていこうと思います。前回の記事とはだいぶテイストが変わりますが最後まで読んでいただけると喜びます。
Salesforceあるある?部署連携やデータ移行での苦労。
弊社ではSalesforceを使用しているのですが、営業部と経営管理部とで使用するオブジェクトを分けており、営業部が登録した情報をもとに経営管理部が売上の本登録を行い、見積書を作成するフローとなっているので、部署間の連携も大切になってきます。
それぞれのメンバーが使いやすいように、Salesforceの改修をかけたりするのが私の業務の一つだったりします。
そんな中でも、他のシステムからのデータ移行の際に数字・記号がうまく変換されずに苦労するケースや、参照項目の数字・記号を参照先で半角に統一したいけど、修正にかける工数がもったいない、というようなことはあるあるではないでしょうか?
弊社は後者のパターンで、見積オブジェクトが一部契約情報オブジェクトの参照項目となっていることから、見積書を作成した時に電話番号に全角・半角が混在していて見栄えが悪くなってしまう、と相談がありました。
前置きが長くなりましたが、今回の私のミッションはこちらです。
【契約情報の参照項目を含む、見積オブジェクトで作成する見積書の見栄えをよくしたい!】
ということで、見積オブジェクト側で関数を使って全部半角にできないかなぁと思い、いろいろ調査してみました。
そんなことわざわざしないで参照元の数字・記号入力を最初から半角入力に固定すればいいじゃん!と思ったそこのあなた。仮にそうしたとして、設定前の過去のデータを使用する場合などは修正の手間があるわけです。例えば契約期間が延びただけとかだと過去のデータをコピー作成することがあるのですが、イメージ沸くかしら?
そんなときに保存しようとしたら、エラーで保存できない。こういうの地味にストレスではないでしょうか?なのでそういった手間を省くためにも「それなら見積オブジェクト側で変換できれば万事解決なのでは?」という結論に至ったわけです。
過去データを全部半角に変換した上で、チェック処理を追加するとういう作戦もありですが、時間がかかりそうなのでこれは別の機会にやってみましょうかね(;^ω^)
Salesforceの関数、どれつかう?
さて本題です。まずは今回の要件をまとめます。
契約情報オブジェクトで登録した情報をもとに見積オブジェクトで見積書を作成したい、且つ、作成する見積書では数字と記号(ハイフン)を半角に統一したい。※見積書作成の前に売上の本登録がありますが今回は直接関与しないためこのプロセスは省きます。
見積オブジェクトの再委託先情報の電話番号は契約情報オブジェクト、パートナー情報の参照項目である。
そんなこんなで、まずはいつもお世話になっている、Salesforceのヘルプページで探してみます。
すべての数式の演算子と関数 (salesforce.com)
文字変換、置き換え系の関数は以下の9種類。全角↔半角変換の関数は意外にもないことが判明しました。ありそうなのにね。
こんなことを書いてしまうと怒られてしまいそうですが、Salesforceユーザーの皆さんもいろいろいじってる中で「あれ?この関数ないの?!」なんてことはないですか?
さて困った。なにやらApexでMapを使った全半角変換関数を作成すれば、できないこともないらしいんですが、まだまだ未熟な私は読んでるだけでしんどくなったので()初心者さんでもより手軽にできる方法でやってみたいと思います。
上記で挙げた関数の中から使えそうなものを探して対応していくことにしました。
「SUBSTITUTE」。これ、使えそうじゃないですか?
数式はとんでもなく長くなりそうだけど、表に見えるわけではないのでそこは気にせず、やってみましょう。
SUBSTITUTE関数とは?
具体的にどんなことをしていくか、というところなんですが、まずは「SUBSTITUTE」について考えてみます。
これに当てはめると、このようにあらわすことができます。
SUBSTITUTE(参照元(契約情報)オブジェクト, 参照元(契約情報)項目名,”変換対象テキスト”,”変換後テキスト”)
ただし置き換えるのは「0~9」までの10個の数字と「ハイフン」。ですが、「ハイフン」と見間違ってしまう可能性のあるものもすべて対象としたいので、「―/ー/‐/-/ ̄/—/⁻/₋/ー」の9個で数字と合わせると19個にもなりました(;'∀')
なのでSUBSTITUTEを19個重ねていく必要があります。さらっと言いましたが19個って(笑)ただ、SUBSTITUTE関数が理解できれば単純なものなので、そんなに難しく考える必要はありません。
例えば再委託先電話番号であれば以下のようになります。
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(KeiyakujouhouID__r.BP2_Comp_Tel__c , "0", "0"),"1","1"),"2","2"),"3","3"),"4","4"),"5","5"),"6","6"),"7","7"), "8","8"), "9","9"),"―","-"),"ー","-"),"‐","-"),"-","-")," ̄","-"),"—","-"),"⁻","-"),"₋","-"),"ー","-")
な、長い(笑)
ちなみに「text, old_text, 」にあたる参照元が、今回のように別のオブジェクトの場合は事前にオブジェクト、項目のAPI参照名を確認しておくことをお勧めします!見積オブジェクトの設定画面のため、「項目の挿入」にはほかのオブジェクトが含まれていないので注意が必要です。
設定してみよう!
上記を踏まえて早速設定してみましょう。ではいつものように、Salesforceホーム画面の右上歯車マークより設定画面にうつります。
オブジェクトマネージャタブをクリックし、クイック検索で「見積」を選択。設定する項目を編集します。
注目するのは「数式オプション」です。ここにさきほどの数式をいれればよいのです。
見積書として表示させたいのですが、数式だけ入れるとただの参照項目の羅列になってしまいます。ということで見積書としての文面も必要になってきますので、それも含めて入力していきます。
数式オプションへの入力が完了したら、必ず構文の確認をしましょう。
問題なければ保存します。
設定したらまずテスト!
設定が完了したので、続いてはテストをして確認してみます。うまくできてるかな?( ^ω^)
契約情報オブジェクトのパートナー情報の各電話番号欄に、数字とハイフンをそれぞれ全角で入力しました。
では見積オブジェクトの方をのぞいてみましょう。
しっかり半角になってますね!大成功です。ヨカッター!!統一感あってきれいですね。
まとめ
今回のように適切な関数がない場合は、「使えそうな関数」で代用してみても意外といけるということがわかりました。全角半角ではなくても、特定の文字を空白にしたい、とかでも使えそうですね。
他にも有効な方法はあるのかもしれませんが、今回の方法は初心者でもパパっとできちゃうので、ぜひ皆さんも活用してみてください。
◆ソシオネット株式会社について◆
この記事が気に入ったらサポートをしてみませんか?