今、Salesforceを会社で使っている。 SalesforceはCRMプラットフォーム である。 メインの利用者は自分(エンジニア)でなく営業系チームメンバーとなる。 初回導入時やデータ管理方法の検討段階では、DB設計周りの知識があったほうがやりやすかったので、自分が手を動かすシーンが多かった。しかし、運用がうまく回り始めてからは営業系メンバーに使い方は任せている。
その中でも直近まで自分にお鉢が回ってきていた作業として、データの一括インポートがある。 「取引先(Account)」「取引先責任者(Contact)」はWeb上から50,000件まで一括インポートできる機能がある。一方、「商談(Opportunity)」「ToDo(Task)」などは一括インポートする利用方法が想定されていないようで機能は見当たらない。 しかし、サービスは利用者の数だけ利用用途が存在するようだ。弊プロジェクトは商談とToDoの一括インポートをしたいという要望があった。
この要望を解決するためにDataLoaderというアプリケーションを使い始めた。
DataLoader怖くないよ
DataLoaderはcsvファイルを元に各種データに対してCURDが実行できるウィザードである。
普段の利用では出てこない英オブジェクト名(取引先=>Account)があったり、使い方を覚えるより使い方を知っている自分がやったほうが速いということで一括インポート作業はエンジニアが請け負う形になっていた。しかし基本は誰でも使うことが可能なツールなので、営業系チームメンバーも不安がらずに使えるように利用方法レクチャーを実施した。
基本的な使い方の流れは次のようになっている。
- どんな操作をしたいのか選択する(Insert, Update など)
- Salesforceアカウントでログイン
- 操作対象オブジェクトを選択する(商談, ToDo など)
- csvファイルを選択する
- csvファイルのヘッダーとオブジェクトのfield名のマッピングを行う
- 結果ファイルを出力するフォルダを選択する
- 実行する
- 成功csvファイルと失敗csvファイルが出力される
一通り使い方を実際に見てもらうことで、各メンバーにもDataLoaderが「よくわからないツール」から「いざという時は個人でも扱えるツール」という認識を持ってもらえたのではないかなと思う。
若干ややこしかったポイント
レクチャーしている時に若干ややこしかったポイントを覚え書いておく。
Upsertって何?
Upsertは update + insert を示す。 既存のデータがあればupdate(更新)、無ければinsert(新規作成)をしてくれる操作方法のこと。 SQL文の扱いが念頭にないと耳慣れないキーワードの様子。 また、他のユニーク制限のかかっているカラムなどによってinsertを狙っていたけど結局失敗した、などケースがあるので、慣れない間はupdateもしくはinsertをそれぞれ使い分けるほうが良いと自分は思っている。
更新にはSalesforce IDが必要
DataLoaderの更新には、更新対象データを特定するための15桁の文字列(Salesforce ID)が必要となる。 また、大文字小文字を判別するための3文字を末尾に付与して18桁として扱うこともある。
マッピングはAutoMatch可能
DataLoaderに食わせるcsvの1行目(ヘッダー)の表記を、対応するオブジェクトの項目名(「商談」の「商談名」とか)にしておくと、マッピング時に「Auto-Match Fields to Columns」ボタンを押すと自動でマッピングをしてくれる。便利。
結果は常に2ファイルが出力される
もし処理が全部成功したとしても、結果ファイルは成功/失敗どちらも出力される。 全部成功の場合、失敗ファイルはヘッダーのみの1行のみとなる。
結果ファイルはいざというときに助けになるかも
もし、一括データ更新に失敗した場合、失敗結果ファイルには失敗理由がちゃんとかかれている。それを元に問題のあった箇所を正して再度やりなおせばいい。 また、データ新規作成に成功したものの、実はデータが間違っていて一括でなおしたい/削除したいなどの出来事が発生してしまった場合。このときは、成功結果ファイルにはSalesforceIDが出力されているので、それを元に改めて変更/削除のcsvファイルを作ることができる。結果ファイルの出力場所を忘れないようにしよう。(多分ウィザードが覚えていてくれると思うけど)
結局いいたかったこと
便利なものはどんどん全員使えるようになればよい!