プログラマ38の日記

主にプログラムメモです。

2017-06-01から1ヶ月間の記事一覧

Java: BeanShellでSalesforceのメタデータ削除ツールを作りました

メタデータを削除したい時があります。 間違えてカスタム項目をたくさん作ってしまった キューを作ると自動で作成されるビューを削除する こんな時にまとめてメタデータを削除できるツールです。 ツールはbeanshellで作成しています。 ダウンロードはこちら…

Java: BeanShellでSalesforceのファイル(添付ファイル、ドキュメント、イベントログ)のエクスポートツールを作りました

SalesforceのバイナリファイルはSOQLで取得することができます。 例えば添付ファイルはAttachmentというオブジェクトから取得できます。 ですが、SOQLでオブジェクトからデータを取得するとbase64エンコードされた文字列となるため、バイナリにデコードして…

Java: BeanShellが使いやすい

Javaでスクリプトを実行する仕組みは色々ありますが、Javaコードがほぼそのまま実行できる点でbeanshellはとても使いやすいなと感じています。(でも、ジェネリクスや、可変長引数は対応してないので、うっかり書いてしまうとエラーの解決に時間がかかります…

Salesforce: コマンドラインのメタデータのエクスポートツールのAPIバージョンをあげました(apiver40.0)

Summer'17(apiver40.0)のエクスポートツールはこちらです。 api39.0のものや、使い方は前回の記事を参照ください。 crmprogrammer38.hatenablog.com 修正履歴 2017/7/24 CustomFeedFilterのダウンロード時にエラーとなる事象の対応を行いました。具体的に…

Java: wscでSalesforce APIを使用する

まずはサンプルコード ConnectorConfig connectorConfig = new ConnectorConfig(); String soapEndpoint = "https://login.salesforce.com/services/Soap/u/39.0"; connectorConfig.setAuthEndpoint(soapEndpoint); connectorConfig.setManualLogin(true); c…

Java: apache cxfでSalesforce APIを使用する

まずはサンプルコード URL wsdlurl = Soap.class.getClassLoader().getResource("/partner.wsdl"); Soap soapBinding = new SforceService(wsdlurl).getSoap(); BindingProvider bp = (BindingProvider)soapBinding; bp.getRequestContext().put(BindingProv…

Java: wsimportでSalesforce APIを使用する

まずはサンプルコード import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.…

Java: axis2でSalesforce APIを使用する

まずはサンプルコード String url = "https://login.salesforce.com/services/Soap/u/39.0"; SforceServiceStub soapBinding = new SforceServiceStub(url); Options options = soapBinding._getServiceClient().getOptions(); options.setProperty(HTTPCons…

Java: axis1.4でSalesforce APIを使用する

まずはサンプルコード SoapBindingStub soapBinding = (SoapBindingStub)new SforceServiceLocator().getSoap(); soapBinding._setProperty(org.apache.axis.transport.http.HTTPConstants.MC_ACCEPT_GZIP , "true"); soapBinding._setProperty(org.apache.a…

Java: 色々なJavaライブラリでSalesforceAPIを使う

SOAP APIのJavaクライアントには、色々なライブラリがあります。それぞれのJavaライブラリでSalesforce APIを使ってみた結果をまとめてみます。 サマリ Java ライブラリ SOAP API Metadata API xsd:intにバインドされる型 XML中の不正な制御コード データバ…

Salesforce: apex:outputText で 日付/時間型はGMTで表示される

outputTextでは、日付/時間型の項目がGMTで表示される仕様ではまりました。 時間まで出力していれば、ずれてるのは比較的気づくのですが日付までしか表示していなかったため発見に時間がかかりました。。 [日付がずれる書き方] <APEX:OUTPUTTEXT value="{0, date, yyyy/MM/dd}"> <APEX:PARAM value="{!items.datetimefield }"></APEX:PARAM></APEX:OUTPUTTEXT> [日付がずれない書き方] <APEX:OUTPUTTEXT value="{0, date, yyyy/MM/dd}"> …</apex:outputtext>

Salesforce: JavaScript FileReaderとsforce.connectionを使って添付ファイルを登録する。

写真を保存したり、書類のPDFを保存したりなどSalesforceにファイルを保存することは多いと思います。 写真はプレビューで確認してから登録したり、複数ファイルをまとめて登録する時など、ファイルを登録する際に便利なのがJavaScriptのFileReaderだと思い…

Salesforce: キューをデータローダで作成する。

キューをデータローダで作成したい キューもかなりの数になると画面から設定で作成するのは大変ですし、ミスも増えてくると思います。そこでデータローダでキューを作成する手順の紹介です。 [キューに関連するデータモデル] オブジェクトとキューの登録画面…

Salesforce: 編集ボタンを上書きしたら、参照画面でインライン編集ができなくなることの対策

Visualforceで編集ボタンを上書きしたら、参照画面でインライン編集できなくなるんですね。 [編集ボタン上書き前の参照画面] [編集ボタン上書き後の参照画面] インライン編集できないと不便なので、参照ボタンも次のVisualforceで上書きしてインライン編集が…

Salesforce: Decimal.round()とDecimal.setScale()は、RoundingModeを指定しないとHALF_EVENです

1円の単位で金額がおかしくなる現象が発生 Decimalのroundは引数を指定しないと、HALF_EVENでした。 RoundingMode.HALF_UPを引数で指定しないと四捨五入になりませんでした。 横着してはいけないですね。。 以下RoundingMode別のround後の値です。 値 Roudin…

Salesforce: Id.getSobjectType() を使ってオブジェクトを特定する。

親オブジェクトがどれかを判断したいときがある 添付ファイル(Attachment)の 参照先 ID(ParentId) ToDo(Task)の 関連先 ID(WhatId)行動(Event)の 関連先 ID(WhatId) など複数の参照先オブジェクトを指定できる項目があります。 トリガ処理などで、特定のオブ…

Salesforce: 1度のSOQLで選択リストの値(表示ラベル)とAPI 参照名を取得する。

toLabelで表示ラベルを取得する 例えば次のような選択リスト項目「PickTest__c」があります。 1) 項目をselectした場合 選択リスト項目は、オブジェクトには、API 参照名がセットされていて、Apexコードと実行結果は次の通りです。 [Apex] List<Sample__c> rows = [Sele</sample__c>…