Salesforceの数式からGmailを立ち上げる

こんにちは.

Salesforceが実施しているDeveloper blogキャンペーンを見て応募してみたくなり記事を書き始めました.
応募にはお題に沿った記事の投稿が必要なため,
[2] Salesforce のローコード開発
を選択しました.数式もローコードだと信じる!


1.要件

極稀ですが要件として,
1.Salesforceの詳細画面内にあるメールアドレスを押下する
2.Gmailの画面が立ち上がって,メールを送りたい
というものがあります.下記の画像の赤枠内のことです.

スクリーンショット 2020-06-28 19.39.42

Salesforceではメールアドレスを押したところで,Gmailが立ち上がるわけではありません.
そのため,以下のような案を提案して了承されました.
前提条件は,Googleにログインしておくこと.
1.詳細画面にボタンを作成する
2.ボタンを押すとGmailの画面が別タブで開き,送信先アドレスがセットされた状態にする
3.アドレス項目が存在すること(リードや取引先責任者に作成すれば問題ないでしょう)

2.作成手順


2−1.ボタンの作成

まずはボタンという名前画像の作成です.
どのように作ってもいいのですが,こだわりが無ければジェネレータで作成をしてしまいましょう.
例として使用したジェネレータのリンクを貼り付けてありますが,お好きなジェネレータを使用してください.

スクリーンショット 2020-06-28 20.03.42

作成したら,今度は静的リソースに格納しておきます.
分かりやすい名前をつけておくと探す時に役立ちます.
説明を書いておくともっと良いと思います.

スクリーンショット 2020-06-28 20.10.04

2−2.数式項目の作成

ボタンが作成できたら次は数式の作成です.
作成しようとしているオブジェクトに数式項目を作成しましよう.
今回は以下のように作成してみましょう.
ラベル名:Gmailボタン
API名:GmailButton
データ型:テキスト

スクリーンショット 2020-06-28 20.16.21

次に数式の入力です.

スクリーンショット 2020-06-28 20.45.41

入力が面倒な方は,以下を使用してみましょう.

IF(
	ISBLANK(Email),
	"",
	HYPERLINK(
		"https://mail.google.com/mail/?view=cm&to=" + Email,
		IMAGE(
		    "/resource/GmailBtn",
		    "GmailButton",
		    33,
		    82
        )
    )
)

今回は取引先責任者に作成していますが,画像やメールアドレス項目を違うAPI名で作成している場合は合うように修正が必要です.
解説を付きも用意してみました.
あまり使う機会が少ないので知っている人も少ないかもしれませんが,数式内で「/* */」を使用することでコメントアウトが出来て,コンパイルしてもコメントアウトしている部分はカウントされていないようです.

IF( 														 /* IF文でボタンの表示・非表示を制御 */
	ISBLANK(Email), 										 /* メールアドレスが空か判定.*/
	"",	 													 /* 空だと何も表示せず,予期せぬ動作を防ぐ */
	HYPERLINK( 												 /* リンクを作成.2つめにセットしたものをリンクにします */
		"https://mail.google.com/mail/?view=cm&to=" + Email, /* URLを指定.このURLとアドレスでGmailでアドレスがToにセットされる */ 
		IMAGE( 												 /* 静的リソースに格納した画像を呼び出す */
			"/resource/GmailBtn",  							 /* 呼び出す画像の指定 */
			"GmailButton", 									 /* カーソルを重ねた時に表示する名称を設定 */
			33,  											 /* 縦の長さを指定.オプションなので無くても良い */
			82  											 /* 横の長さを指定.オプションなので無くても良い */
		)
	)
)

2−3.動作確認

動作を確認していきましょう.
まず,アドレスが未入力の状態です.
Gmailボタンに何も表示されていなければOKです.

スクリーンショット 2020-06-28 20.47.19

次に,アドレスが入力されている状態です.
Gmailボタンが表示されており,押下できる状態になっていればOKです.

スクリーンショット 2020-06-28 20.47.05

では,実際にGmailボタンを押下してみましょう.
Gmailが別タブで開き,Toの部分にアドレスがセットされていればOKです.

スクリーンショット 2020-06-28 20.52.45

新しいタブでこのような画面が開いたらOKです.

3.まとめ

数式を使用して,Gmaiを立ち上げてアドレスをセットすることが出来ました.
Salesforce内からメールを送信すれば,履歴が残るので本当はこちらを薦めるほうが良いと考えます.
しかし,メールだけピンポイントで残したくない・見せたくないという要件があった場合は,実現できません.
そんな中,少しでもメール作成を楽に出来ないかとの要望でこのような数式でGmailを立ち上げることをしてみました.

プログラムを書かなくても開発できるローコード開発ですが,イメージとしてプロセスビルダーやフローが先に思い浮かぶと思います.
数式でしか出来ないこともたくさんあるので,ぜひ数式も使って便利になるものを作成するのはどうでしょうか.

4.おまけ

4−1.アドレスのチェック

メールアドレスが間違っていたら,送信ができないため入力時にアドレスをチェックしておく必要があるかもしれません.
と言っても,Salesforceで出来るのは入力したアドレスがメールアドレスの形をしているかのチェックが限界です.
名刺管理ツールが入っていれば,そちらに任してしまえばよいのですが,手入力の場合はそうはいきません.
この場合は入力規則でチェックを行います.
公式のヘルプに記載されているそのままですので,ヘルプを参照してください

REGEX ( UPPER ( EmailField__c ) ,"^[A-Z0-9._%+-/!#$%&'*=?^_`{|}~]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$")

4−2.CCとBCCと件名と本文

今回はToにアドレスをセットするまでが要件でした.
その他にも値をセットしたいと言う要件はあるかもしれません.
その時は以下のようにすると,値をセットすることが出来ます.

IF(
	ISBLANK(Email),
	"",
	HYPERLINK(
		"https://mail.google.com/mail/?view=cm&to=" + Email +
        "&cc=" + CCのアドレス +
        "&bcc=" + BCCのアドレス +
        "&su=" + 件名 +
        "&body" + 本文,
		IMAGE(
		    "/resource/GmailBtn",
		    "GmailButton",
		    33,
		    82
        )
    )
)

それぞれに直打ちの値をセットしてもいいし,詳細画面に項目を用意してその値を表示するのもいいかもしれません.
後者のほうがオススメです.