0

セールスフォースにスケジューラのような機能が見られますが、セールスフォースが提供する既存の機能と多少関連しており、私の調査によるとサンプルソースコードは提供されていません。

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

ゴール:

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

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

今日の日付が startDate の 1 日前の場合、Player にメールを送信したいと考えています。たとえば、プレーヤーの名前がJohnで、今日が2010-12-10であるプレーヤーのstartDate が に設定されている2010-12-11場合、電子メール"hello John"が送信されます。

残念ながら、Apex を使用してこれを行う方法の良い例やチュートリアルをオンラインで見つけることも、セールスフォースのドキュメントを見つけることもできません。誰がどこから始めればよいか指摘できますか?

アップデート

からの答えを拡張したい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>
4

2 に答える 2

1

Apex について深く掘り下げる前に、コードを含まないソリューションを確認してください...

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

于 2010-11-11T11:47:00.713 に答える
1

私は再び自分の質問に答えています..

以下のリンクで、検索してください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;
   }   
}
于 2010-11-11T09:36:59.977 に答える