2010-11-18

Force.com : データを import/export したい - Force.com Excel Connector

 
データを import/export したい - Force.com Excel Connector



◆ 前提

  1. 必要なら Office Toolkit をダウンロードして、インストールしておく
  2. Force.com Excel Connector をダウンロードして、適当なところに展開しておく
  3. Force.com Excel Connector のアドオンの設定をしてみる
    1. Excel を起動する
    2. [ツール]→[アドオン]→[参照]ボタン押下
    3. 先に展開した sforce_connect_XXX.xla みたいなファイルを読み込む
    4. 読み込んだアドオンをチェックして[OK]ボタン押下



◆ ログイン・ログアウト・確認

■ ログイン
  1. [sforce Connector]→[(処理したい操作)]押下
  2. 入力項目を設定→[Login]押下
    • User Name : 接続先のユーザ名
    • Password : 接続先のユーザのパスワード(+セキュリティトークン)


■ ログアウト
  1. [sforce Connector]→[Logout Session]押下


■ 確認
  1. [sforce Connector]→[Logout Session]の下にログイン中のユーザ名が表示される



◆ データの取得

  1. [sforce Connector]→[Sforce Table Query Wizard]押下
  2. [Sforce Table Query Wizard - Step 1 of 3]
    1. データ表示開始位置を指定→[Next]ボタン押下
  3. [Sforce Table Query Wizard - Step 2 of 3]
    1. 取得するオブジェクトを選択→[Next]ボタン押下
    2. 取得するフィールドを選択→[Next]ボタン押下
  4. [Sforce Table Query Wizard - Step 3 of 3]
    1. 取得条件がある場合は、条件を設定して[Add to Query]ボタン押下で条件追加
    2. [Run Query]ボタン押下
日付は最後に「T09:00:00Z」を書かないとずれるぽい。



◆ データの追加

■ ex. 取引先(Account)
  1. Account のヘッダを取得する
    1. [sforce Connector]→[Sforce Table Query Wizard]押下
    2. [Step 1 of 3][$A$1]を指定→[Next]ボタン押下
    3. [Step 2 of 3][Account]を選択→[Next]ボタン押下
    4. [Step 2 of 3][取引先ID][取引先名]を選択→[Next]ボタン押下
    5. [Step 3 of 3][Cancel]ボタン押下
  2. 新規データを作成する
    AB
    1Account
    2取引先ID取引先名
    3New
    4New
    5New

    ※ A2 のコメント
    Primary Object Identifier
    API Name: Id
    Type: id
    
    ※ B2 のコメント
    Required on Insert
    API Name: Name
    Type: string
    
    説明
    • A1 : オブジェクトの API 参照名
    • A2:B2 : オブジェクトの項目名、他
    • A3:B5 : 新規データ
  3. 追加するデータ(上記の場合は[A3:A5]な感じ)を選択→[sforce Connector]→[Insert Selected Rows]押下
  4. 「Account に 3 件レコードを追加する?」なダイアログが表示されるので[OK]ボタン押下
  5. 結果が Excel に反映される
    • OK : [取引先ID]が追加したデータのIDに変更される
    • NG : [取引先ID]のセルの色が変わる。コメントでエラー内容が表示される
[所有者]の項目を指定しない場合にはログインしているユーザの ID が設定された。
項目のコメントに「Read Only Field」が書かれてあるものは勝手に値が設定された。
結果が NG のときにダイアログボックスでエラーメッセージが表示されるのもあった ... 気がする。



◆ データの更新

■ ex. 取引先(Account)
  1. Account のデータを取得する
  2. データを更新する
    ABC
    1Account
    2取引先ID取引先名取引先 電話
    3001A000000ScdgkIAB0120-000000
    4001A000000Scdg4IAB
    5001A000000ScdglIAB
  3. 更新するセル(上記の場合は[C3])を選択→[sforce Connector]→[Update Selected Cells]押下
  4. 「Account に 1 件 レコードを更新する?」なダイアログが表示されるので[OK]ボタン押下
  5. 結果が Excel に反映される
    • OK : (特になし?)
    • NG : 選択した箇所のセルの色が変わる。コメントでエラー内容が表示される



◆ データの更新

■ ex. 取引先(Account)
  1. Account のデータを取得する
  2. 削除するデータの行を選択→[sforce Connector]→[Delete Object]押下
  3. [取引先ID]が「Deleted」に変わる
削除後は、ごみ箱にいた。



◇ その他


しかし、結構古いなぁ。
Sandbox への接続の仕方がわからなかった。
(ので、最後は Force.com Data Loader 使ってた)



◇ 環境

  • Office Toolkit 3.0
  • Office Excel 2003
  • Force.com Excel Connector Version 6.16pe
  • Force.com Developer Edition / Force.com Enterprise Edition



◇ 参考

 

2010-11-16

Force.com : デプロイがしたい - Force.com IDE (Eclipse Plugin)

 
デプロイがしたい - Force.com IDE (Eclipse Plugin)



◆ 前提

  • ローカルにデプロイ元のプロジェクトを取得していること、とか



◆ デプロイ方法

  1. Eclipse を起動
  2. デプロイしたいプロジェクトを右クリック→[Force.com]→[Deploy to Server]
    (ローカルのプロジェクトとデプロイ元とで同期が取られる)
  3. [Destination Details (Step 1 of 4)]
    入力項目を設定→[Next]ボタン押下
    • Username : デプロイ先のユーザ名
    • Password : デプロイ先のユーザのパスワード
    • Security Token : デプロイ先のユーザのセキュリティートークン(※)
    • Environment : デプロイ先の環境
  4. [Archive Options (Step 2 of 4)]
    アーカイブを作成するディレクトリを設定→[Next]ボタン押下
    • Project archive : プロジェクトのアーカイブ作成
    • Deatination archive : デプロイ先のアーカイブ作成
  5. [Deployment Plan (Step 3 of 4)]
    デプロイするファイルを選択→[Next]ボタン押下
    • Validate Deployment : デプロイの検証
  6. [Deployment Result (Step 4 of 4)]
    デプロイ結果を確認→[Finish]
    • View Logs : デプロイのログを表示



※ セキュリティートークンの発行

  1. salesforce.com にログイン
  2. [設定]→[個人設定]→[私の個人情報]→[私のセキュリティトークンのリセット]→[セキュリティトークンのリセット]ボタン押下
  3. 設定しているメールアドレスに新しいセキュリティトークンが送信される



まぁ。 クラスとかトリガーだけならいいけど、 まるっと移すとなると一旦移し終わった後で、 手動でぽちぽち設定をしていたりもする ... 。



◇ 環境

  • Java SE 6u22
  • Eclipse IDE for Java Developers Version: Helios Service Release 1
 

2010-11-06

Force.com : Apex でスケジュールを使って処理を実行したい

 
Apex でスケジュールを使って処理を実行したい
  • どっかに「hello, world」とか出力する
  • 1 時間毎に出力する



◆ クラス

■ 処理を実行するクラス
// 処理を実行するクラス
public class HelloWorld {
    // 処理
    public static void print() {
        System.debug('***** hello, world');
    }
}


■ スケジュールを実行するクラス
// スケジュールを実行するクラス
global class ScheduledHelloWorld implements Schedulable {
    // 処理
    global void execute(SchedulableContext sc) {

        System.debug('***** INFO  *****');
        CronTrigger ct = [SELECT id, CronExpression, StartTime, EndTime, NextFireTime, PreviousFireTime, TimeZoneSidKey FROM CronTrigger WHERE id = :sc.getTriggerId()];
        System.debug('***** ジョブID : ' + ct.id);
        System.debug('***** cron 式 : ' + ct.CronExpression);
        System.debug('***** スケジュール開始日時 : ' + ct.StartTime);
        System.debug('***** スケジュール終了日時 : ' + ct.EndTime);
        System.debug('***** 次のジョブの開始日時 : ' + ct.NextFireTime);    // null の場合、次回予定なし
        System.debug('***** 最新のジョブ終了日時 : ' + ct.PreviousFireTime);    // null の場合、未実行
        System.debug('***** タイムゾーン : ' + ct.TimeZoneSidKey);

        System.debug('***** START ***** ');
        HelloWorld.print();
        System.debug('***** E N D ***** ');
    }

    // テスト
    static testMethod void testScheduledHelloWold() {
        Test.startTest();
        String jobId = System.schedule('test hello world','0 0 * * * ?', new ScheduledHelloWorld());
        System.debug('***** job id : ' + jobId + ' ***** ***** *****');
        Test.stopTest();
    }
}
スケジュールを登録するためには Schedulable インタフェースを実装しないといけないらしい。
Schedulable インタフェースは execute メソッドを実装しないといけないらしい。

[開発]→[Apex クラス]→[ScheduledHelloWorld]→[テストを実行]ボタン押下でテストが可能。
指定した実行時間まで待たずに、テストは開始される。


■ スケジュールを登録するクラス
// スケジュールを登録するクラス
global class HelloWorldScheduler {
    // スケジュール開始
    public static void start() {
        String jobId = System.schedule('hello world','0 0 * * * ?', new ScheduledHelloWorld());
        System.debug('***** job id : ' + jobId + ' ***** ***** *****');
    }
}
  • System.schedule(String JobName, String CronExpression, Object schedulable_class) とは
    • 引数・String JobName : ジョブ名
    • 引数・String CronExpression : スケジュールの実行時間指定(cron 形式)
      • 形式 : Seconds Minutes Hours Day_of_month Month Day_of_week optional_year
      • ex. 毎時間 0 分 0 秒 : '0 0 * * * ?'
      • ex. 毎月 末日 22 時 : '0 0 22 L * ?'
    • 引数・Object schedulable_class : Schedulable インタフェースを実装したクラスのインスタンス
    • 戻り値・String JobId : ジョブID



◆ スケジュールの登録 1

  1. [設定]→[開発]→[Apex クラス]→[Apex をスケジュール]ボタン押下
  2. 項目を設定
    • ジョブ名 : hellow world (任意の名前)
    • Apex クラス : ScheduledHelloWorld (Schedulable インタフェースを実装したクラス)
    • Apex の実行をスケジュール : (略)
  3. [保存]ボタン押下
画面からだと、スケジュールは最低一日一回からぽい。(実装した場合は最低一時間一回からっぽい。)
あと、スケジュールの実行期間(開始、終了)とか設定しないといけないぽい。



◆ スケジュールの登録 2

  1. [システムログ]リンク押下
  2. [System Log]画面の[Execute Apex]に実行するメソッドを入力
    • HelloWorldScheduler.start();
  3. [実行]ボタン押下
新しい[System Log]画面なんて知らない。
そのまま[System Log]画面を開いていると、スケジュールが実行されたときに[Logs]にログリストがつらつらとか。



◆ スケジュールの確認

  1. [設定]→[監視]→[スケジュール済みジョブ]から確認



◆ スケジュールの削除

  1. [設定]→[監視]→[スケジュール済みジョブ]から削除するジョブの[アクション/削除]リンク押下



◇ 参考