質問

Salesforce にはスケジューラのような機能がありますが、これは Salesforce が提供する既存の機能と多少結びついており、私の調査の限りサンプル ソース コードは提供されていません。

私がやりたいのは、日付に基づいて単純な電子メールを送信する独自​​のスケジューラーを作成することです。

ゴール:

カスタムオブジェクト Player フィールドがあります

startDate : date like '2010-11-01'
email : text field like foo@bar.com
name : player's name like John.

今日の日付が startDate の 1 日前である場合、プレーヤーに電子メールを送信したいと考えています。たとえば、プレイヤーの名前は John そして今日だったら 2010-12-10 そして1人のプレイヤーの startDate は次のように設定されます 2010-12-11, と言うメール "hello John" が送信されます。

残念ながら、Apex を使用してこれを行う方法について、オンラインで良い例やチュートリアル、または Salesforce ドキュメントが見つかりません。どこから始めればよいか誰か教えていただけますか?

アップデート

からの答えを拡張したいと思います eyescream.

スケジューラを設定した後、テンプレートを使用して電子メールを送信するなどのフォローアップ アクションを設定したり、カスタム オブジェクト フィールドをいくつかの値に設定したりできます。

以下に、Visualforce 形式のメールテンプレートを使用している人にとって役立つことがわかりました。

他のオブジェクト「custom」への参照を持つカスタムオブジェクト「alertTester」があり、このオブジェクト「custom」でも別のオブジェクト「custom1GrandChild」への参照があり、すべての関係(最大3または5レイヤーまでだと思います)には以下のようにアクセスできます。

以下でテストしましたが、正常に動作します。今、条件が設定されたメールを受信して​​います:)

<messaging:emailTemplate subject="Hello" recipientType="User" relatedToType="alertTester__c" >
<messaging:plainTextEmailBody >

{!relatedTo.name}
{!relatedTo.custom__r.name}
{!relatedTo.custom__r.custom1GrandChild__r.name}


</messaging:plainTextEmailBody>
</messaging:emailTemplate>
役に立ちましたか?

解決

Apex について詳しく説明する前に、コードを含まないソリューションを確認してください。

電子メール アラート + ワークフロー ルールは、このシナリオで必要なすべての機能を提供し、コードなしでクリックするだけで済みます。

他のヒント

もう一度自分の質問に答えます..

以下のリンクから検索してください schedule

http://www.salesforce.com/us/developer/docs/apexcode/index.htm

Apex には、cron タスクを実装して設定できる Schedulable インターフェイスがあるようです。

以下はドキュメントで提供されているサンプルコードです。

global class TestScheduledApexFromTestMethod implements Schedulable {

// This test runs a scheduled job at midnight Sept. 3rd. 2022  


   public static String CRON_EXP = '0 0 0 3 9 ? 2022';

   global void execute(SchedulableContext ctx) {
      CronTrigger ct = [SELECT id, CronExpression, TimesTriggered, NextFireTime
                FROM CronTrigger WHERE id = :ctx.getTriggerId()];

      System.assertEquals(CRON_EXP, ct.CronExpression);
      System.assertEquals(0, ct.TimesTriggered);
      System.assertEquals('2022-09-03 00:00:00', String.valueOf(ct.NextFireTime));

      Account a = [SELECT id, name FROM Account WHERE name = 
                  'testScheduledApexFromTestMethod'];
      a.name = 'testScheduledApexFromTestMethodUpdated';
      update a;
   }   
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top