Apex APIで電子メールを送信

by Shinichi Tomita on 5月 28, 2007 at 06:37 午後

Spring'07からApex APIのバージョンは9.0になりましたが、9.0で追加されたAPIの新機能に「電子メール送信(sendEmail)」というものがあります。これによって、アプリケーションは電子メール送信サーバ(SMTPサーバ)を介することなく、Salesforceから直接指定した宛先に対してメールを送信することが可能になります。

この新機能はAJAX Toolkitを使ってSコントロールから利用することもできます。以下にAJAX Toolkitからの利用例を示します。

var message = new sforce.SingleEmailMessage();
message.toAddresses = [ 'abc@example.com', 'def@example.org']; // 送信先メールアドレス(複数可)
message.subject = 'Hello, World';
message.plainTextBody = 'Hello World from '+sforce.connection.getUserInfo().userFullName;
var result = sforce.connection.sendEmail([ message ]);

Salesforceのデータベースにメールの宛先に指定したいレコード情報(e.g. リード、取引先責任者など)が格納されている場合は、IDによって宛先を指定することも可能です。

var message = new sforce.SingleEmailMessage();
message.targetObjectId = '00Q5000000HHUaw'; // リードのID
message.subject = 'Hello, World';
message.plainTextBody = 'Hello World from '+sforce.connection.getUserInfo().userFullName;
var result = sforce.connection.sendEmail([ message ]);

SingleEmailMessageのほかにMassEmailMessageを利用することで、Salesforceに保存されている電子メールテンプレートを利用して、一括メール送信を行うことも可能です。

var message = new sforce.MassEmailMessage();
message.targetObjectIds = [ '00Q5000000HHUaw', '00Q5000000HHUYQ' ]; // メールを一括送信するリードをIDの配列で指定
message.templateId = '00X50000000o1Gk'; // 使用する電子メールテンプレートのID
var result = sforce.connection.sendEmail([ message ]);

なお、メール送信者の名前およびメールアドレスには、APIにログインしているユーザの情報が用いられることに注意してください。

こちらのAPIについての詳細はApex Web Services API Developers Guideに記載されています。

また、ADN英語版のApex WikiにはSコントロールで電子メール送信を実装したサンプルがあがっていますので、ぜひ参考にしてみてください。

http://wiki.developerforce.com/index.php/Send_Emails_Through_SControls

開発者必携、AJAX Tools

by Shinichi Tomita on 5月 8, 2007 at 11:56 午前

今回は、Salesforceの開発者にとってまさにMust Haveといってもいいツールである、AJAX Toolsについてご紹介します。

AJAX Toolsとは、Salesforce Labsが提供しているAppExchangeアプリケーションで、現在AppExchangeサイトから無料でインストールして利用することが可能です(この記事を書いている時点での最新バージョンは1.0.2です)。

AJAX Toolsという名前は、Salesforceが提供しているAPIツールキットであるAJAX Toolkitと少々間違えやすいのですが、AJAX Toolsはこのツールキットを用いて作成されたApexアプリケーションであり、さらにSalesforce上で動作するApexアプリケーション開発のためのIDE(統合開発環境)として利用ができる優れものです。

もちろんSalesforceには一般的なIDEであるEclipse用のプラグインもあるのですが、AJAX ToolsはSalesforce上で動作するWebアプリケーションとして提供されるため、ローカル環境をセットアップする必要もなく、Webブラウザを立ち上げればほぼすべてのことができてしまいます。

AJAX Toolsには、以下のような機能が含まれています。

Sコントロールエディタ

Ws000022

Salesforceでは、Sコントロールと呼ばれるコンポーネントの中にHTMLおよびJavaScriptを記述してカスタムのユーザインターフェースを定義します。AJAX ToolsのSコントロールエディタを利用すると、ブラウザ上ながら通常のコードエディタを利用しているような感覚でHTMLおよびJavaScriptを編集することが可能になります。さらに作成したSコントロールをその場で実行してテストすることができるため、アプリケーション開発における繰り返し作業のストレスが低減されます。

SOQL Explorer

Ws000023

Sforce Object Query Language(SOQL)は、Salesforce内のデータベースに含まれるレコードを検索するためのクエリ言語ですが、AJAX ToolsのSOQL Explorerを利用すると、SOQLをWebブラウザ上から実行して結果をページ上のテーブルとして表示して確かめることが可能になります。AJAX ToolsはWinter'07より導入されたSOQL-Relationshipにも対応しており、リレーションをたどった結果のレコードについても階層的に表示することが可能です。また、SOQL文を一から書かなくとも、オブジェクト定義から検索したい項目のチェックボックスを選択するだけで自動的にSOQL文を作成する機能がついており、大変有用です。

JavaScriptシェル

Ws000027

「SalesforceのAPIは使うけれども、AJAX Toolkitは使わないよ」という人にとっても、AJAX Toolsが備えているAPIの実行シェルはとても有用ではないかと思います。AJAX ToolsのJavaScriptシェルを利用することで、実際にAPIを実行した結果がどのようになるかを簡単に確かめることができます。実行したコマンドの履歴やメソッド名の補完(現在Firefoxのみ)にも対応しており、簡単なデータ処理ならシェル上でスクリプトを組んで実行することも可能です。

サンプルコード

Ws000026

AJAX ToolsにはAPIメソッドごとにサンプルコードが同梱されています。このサンプルコードはその場で実際に実行することもできますし、さらに与えられたサンプルコードに自分で修正を加えてみて、それを実行してみることもできます。

その他、AJAX Toolsの情報はこちらにあります。ぜひご参照ください