こんにちは。
SalesForceにCSVファイルを取り込みます。
そして、レコードとして環境内に新規作成します。
まずVFに操作用のテーブルを作ります。
<table border="0" style="width: 100%;">
<tr>
<td><apex:inputFile filename="{!cv.Title}" value="{!cv.VersionData}"/></td>
<td>
<apex:commandButton value="取込" action="{!ImportBtn}" />
</td>
</tr>
</table>
そしてApexにCSVを取り込む記述をします。
これがメインとなるクラスです。
/** 入力ファイル */
public ContentVersion cv {get; set;}
/** ボタン押した時のメソッド */
public PageReference ImportBtn(){
// CSVリスト化してオブジェクトを作成しInsert
List<List<String>> strListLists = new List<List<String>>();
// 取込みCSV
String csvFile = this.cv.VersionData.toString();
//文字列からCSV行毎のリストを作成
List<String> rowList = csvFile.split('\r\n', 0);
//CSV行毎のリストから項目のリストを作成
for(Integer i = 1 ; i < rowList.size() ; i++){
// 項目単位にリスト化し、取込みCSVリストに追加
List<String> strLists = rowList[i], ',';
strListLists.add(strLists);
}
// リスト作成
List<Target__c> targetList = insertCreator(strListLists);
// 新規作成
insert targetList;
return null;
}
そしてこれはCSV内の文字列をリストに変換する処理
public List<Target__c> insertCreator(List<List<String>> targetStringList) {
// 更新用のリストを作成
List<Target__c> insertList = new List<Target__c>();
// 対象の番号を付けてMapに保存
numberCounter = 0;
Map<Integer,String> targetStringMap = new Map<Integer,String>();
for (String targetString : stringList) {
targetStringMap.put(numberCounter,targetString);
numberCounter += 1;
}
// Mapの値を取得して更新用リストに詰める
for (List<String> stringList : targetStringList) {
Target__c target = new Target__c();
target.Name = targetStringMap.get(0);
insertList.add(target);
}
return insertList;
}
これで読み込みたいCSVファイルを選択して、ボタン押したら取込み出来ます。
ついでに出来上がったことをメールにして誰かに送りつけてやりましょう。
まずメールの送信設定の中を書き換える必要があります。
設定⇒メール管理⇒送信⇒アクセス権を『すべてのメール』に設定。
※設定してあったらそのままで。
private void sendMail() {
// メールアドレス設定(送り先・送り主)
String labelAddress = 'watachan@test.jp';
String userAddress = UserInfo.getUserEmail();
String[] address =labelAddress.split(',');
address.add(userAddress);
// 件名
String subject = '';
// メール本文
String body = '';
// ログオブジェクト
BatchLog log = new BatchLog();
// メールを新規作成
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// 件名
subject = '【 成功のお知らせ 】\r\n';
body += '成し遂げたぜ。\r\n';
// メール設定
mail.setToAddresses(address);
mail.setSubject(subject);
mail.setPlainTextBody(body);
// メール送信
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail});
}
以上です。