質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

10851閲覧

Salesforceのカスタムボタンを使ってCSV出力を行いたい

datenyamineko

総合スコア8

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/05/25 07:01

編集2017/05/25 07:37

Salesforceのオブジェクトからリストボタン『CSV出力』を作成。
動作:JavaScriptを実行
内容のソース:OnClickJavaScript
で設定しています。

あとは構文でJavaScriptを入力し、CSVを出力できるようにする。

そこで、JavaScriptでCSV出力を行えるようにするには
どうしたらよいか、ご教示お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

代替案となってしまいますが、
カスタムボタンをVisualforceとし、Visualforce + Apexを使用しAccountの内容をCSVで出力する例を記述します。
試してみたのは
・Salesforce classic
・リストボタンに実装ということなので、Accountのビューに、ボタンを用意。チェックしたものをCSV出力する。

まず、Visualforceを2つ作成します。
その1.ボタン用

<apex:page standardController="Account" recordSetVar="AccountObjs" extensions="AccountCsvController" action="{!execute}"> </apex:page>

その2.CSV用

<apex:page standardController="Account" recordSetVar="AccountObjs" extensions="AccountCsvController" contentType="text/csv;charset=Shift-JIS;#test.csv"> <apex:repeat value="{!csvList}" var="row"> <apex:outputText value="{!row}"/> </apex:repeat> </apex:page>

Apexは以下のようにします。

public class AccountCsvController { public List<String> csvList {get; set;} ApexPages.StandardSetController controller {get; set;} public AccountCsvController(ApexPages.StandardSetController controller) { this.controller = controller; } public PageReference execute(){ List<Account> AccountIdList = (List<Account>)controller.getSelected(); csvList = new List<String>(); for(Account a : [SELECT Name, BillingPostalcode FROM Account Where Id IN : AccountIdList]){ String line = a.name + ',' + a.BillingPostalcode + '\n'; csvList.add(line); } return Page.AccountCsvButtonPage2; } }

雑に書いています。
・nullの場合か空文字に変換
・Stirng.escapeCsv()でダブルクォーテションをつけたりといった考慮
・ビューでチェック無しの場合のエラー処理
も必要になりますが、とりあえず、CSVはこのようにすれば出力できます。

投稿2017/05/31 07:17

nabeyaki

総合スコア116

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

JavaScriptは使用していませんが、VisualForceのページに

ontentType="text/csv"

と設定した上で、そのページに遷移するようにするとうまくいくみたいですね。

HTML

1<apex:page controller="CreateCSV" cache="true" 2 contentType="text/csv;charset=Shift-JIS;#test.csv" readOnly="true"> 3 <apex:repeat value="{!csvRows}" var="row"> 4 <apex:outputText value="{!row.columns}" /> 5 </apex:repeat> 6</apex:page>

参考サイト

投稿2017/05/25 07:15

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nabeyaki

2017/05/26 00:12

確かにVisualforceでcontentType="text/csv"を入れればCSVとして出力することは可能です。 しかし、<apex:repeat>のタグは現在10000件までしか使えませんので、出力するCSVのレコード数が多い想定でしたら注意が必要です。質問者さん、その点は大丈夫でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問