プログラマ38の日記

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

Salesforce

Salesforce: データローダの起動についてのメモ(メモリ不足の対応)

Salesforceのデータをまとめて編集をする時に、データローダを使います。 環境的な制約でうまく動作しなかった時のメモになります。 ※データローダのバージョンは40を前提としています。 環境的な問題 Javaのインストールが許可されていない メモリ不足のエ…

Salesforce: データ連携時に気をつけること(Salesforce→他システム)

Salesforceから他システムへデータを渡したい時があります。 入力はsalesforceでPCとモバイルから行い、その後入力したデータを基幹システムや分析システムに連携することはよくあることだと思います。 その時に気をつけておくことのメモです。 大量データを…

Salesforce: Apex開発で気をつけていること

自分がApexでの開発で気をつけていることのメモです。 Salesforce IDの項目はID型で定義する。 トリガでの他オブジェクトの作成/更新処理を作り過ぎない 項目自動更新とトリガを混在させない そこでしか使わない処理は無名ブロックで囲み変数のスコープを限…

Salesforce: Force.com移行ツール(Force.com Migration Tool)で指定するコンポーネント名をselect可能なSオブジェクト

件名がやたら長くなってしまいました。 オブジェクトのメタデータは、オブジェクトの情報をまとめて取得する方法と、カスタム項目、リストビュー、レコードタイプ、入力規則、カスタムボタンまたはカスタムリンクを個別で取得する方法があります。個別で取得…

Salesforce: テストクラスの作成での留意事項

SalesforceのApex開発を行う場合、本番環境にリリースするためにテストクラスを作成する必要があります。 設定とちょっとのトリガなどの開発であれば、テストクラスの作成はさほど大変ではないのですが、サイトやコミュニティで多くの画面を作りこむ場合、テ…

Salesforce: カスタムボタンのJavaScriptで注意すること

Salesforceでは、標準レイアウトにカスタムボタンを配置してアプリケーションを作成していきます。(Lightning Experience ではなくClassicを対象とした場合です) 自分がカスタムボタンの作成時に注意することのメモです。 環境依存の文字列はカスタム表示…

Salesforce: Shift_JISのテキストファイルを作成して添付ファイルに登録する

SalesforceのApexプログラムの中で、Shift_JISのCSVファイルを作成したい時があります。 Salesforceの文字列とバイナリは、StringとBlobを使います。BlobからStringとその逆の変換の関数は用意されていますが、その際のエンコーディングはUTF-8となります。 …

Salesforce: SOQLやビューでよく使う日付の検索条件文字列

ビューやSOQLでは、当日を起点にして何日前や何日後といった条件を指定したい時があります。 たくさんある中でよく使う書き方のメモです。 ビューでの日付の検索条件文字列 Salesforceのリンクはこちらです。 日付の検索条件リテラル コメント 過去n日間 演…

Salesforce/SQL: 検索条件でのnullの扱いの違いについて

Salesforceではデータの取得でSOQLを使います。一般的なRDBのSQLと似ていますが、結合処理や、検索の指定がSQLと異なります。 検索条件でのnullの指定と検索結果について、SOQLとSQLの違いがあるのでメモです。 次のデータをサンプルとしてSOQLとSQLで検索結…

Salesforce: 最終更新日(LastModifiedDate)とSystem Modstamp(SystemModstamp)の違い

最終更新日(LastModifiedDate)とSystem Modstamp(SystemModstamp)は、今まで特に意識もせず、同じタイムスタンプが入っているなーぐらいの認識でした。 ですが、「レコードの作成時に監査項目を設定」を有効化して、最終更新日(LastModifiedDate)に直接タイ…

Salesforce: Communityの共有セットでのデータ共有で気をつけること

Communityで、Customer Communityというライセンスの時に気をつけることのメモです。(Customer Community Plus、Partner Communityは関係ありません) 共有ルールは使えず、共有セットを使う 1に伴い、Sharingのオブジェクトは使えない 1に伴い、共有セットの…

Salesforce: 重複ルールで作成・編集を許可している時の、標準画面以外からのデータの登録について

Salesforceで、重複ルールという機能があります。(前はなかったのですが、とても欲しかった機能でした。実装されてちょっと嬉しかったです) 重複ルールの設定次第では、重複レコードが他にあった際に警告を出しつつそのまま保存ができます。 この設定にし…

Salesforce: APIの「renderEmailTemplate」「renderStoredEmailTemplate」を使ってみた

前回SalesforceのAPIについて書きました。使ったことのないメソッドが増えているなーと思い、まず「renderEmailTemplate」「renderStoredEmailTemplate」を使ってみました。 「renderEmailTemplate」 String endpoint = "https://login.salesforce.com/servi…

Salesforce: APIで用意されている機能について

SalesforceにはいくつかのAPIが用意されています。こういうことをやりたいときにこれを使えばいいというのがわかるようにまとめてみました。Rest API、Bulk APIは外していて、SOAP APIに限定しました。(APIVer40の時に書いています) メソッド 処理内容 どのA…

Salesforce: 直接XMLでSalesforce APIを操作する

WebServiceのSOAPメッセージのデバッグについて書きました。 crmprogrammer38.hatenablog.com これを行うことで、SOAPメッセージが拾えるので、xmlをpostして、xmlで結果が返ってくるというシンプルな処理でSOAP APIを行うことができます。wsdlクライアント…

Salesforce: Apex開発で最初の頃にやってしまった間違い

Java開発の後、Salesforceの開発を始めたのですが、当初色々間違いや勘違いがありました。思い出すことがあったので書いてみます。 booleanの変数の扱い Javaですとboolean変数は true/false のプリミティブ型で、Booleanと書くとオブジェクトとなりますが、…

Salesforce: ナレッジを一括で公開する

Salesforceのナレッジをまとめて登録し、そのまま公開したい場合があります。 その際のやり方は次のようになります。 ナレッジをまとめて登録する データローダをはじめとするAPIで登録が可能です。 上記の、ナレッジの記事タイプの詳細で表示されているAPI…

Salesforce: SOQLの検索条件で、半角全角の区別ではまったこと

SOQLで検索条件は、半角全角の区別ではまりました。何ではまったかというと、検索条件で指定したのは半角なのに、検索結果に全角も含まれていたからです。 はまった経緯は次です。 半角の"x01"と全角の"x01"は分けてコード登録を行います。 Apex処理内で…

Salesforce: パーセント項目をApexで普通に掛け算すると100倍になる

Salesforceのパーセント項目の使い方を間違って値が100倍になってました。 間違った理由は、数値項目とパーセント項目を単純に掛け算したからで、正しい使い方は、数値項目とパーセント項目を掛け算した後、100で割る必要があります。 例えば、「24%」 とい…

Salesforce: 自動採番項目をupsertの外部ID(externalIdField)として使う

Salesforceで自動採番項目を外部IDにできるようになりました。 Apex内でupsertのキーとして使用できるようになりましたが、DataLoaderをGUIで使う時はupsertの外部IDとして選ぶことができません。 Help | Training | Salesforceの記載には、 データローダは …

Salesforce: 文字化けの制御で注意したいこと

他のシステムとの整合をとるため、Salesforceで入力できる文字を制限をかけたり、変換したい場合があります。 次のような要件があると思います。 Shift_JISで定義されていない文字をエラーとしたい Shift_JISで定義されていない文字は、全角四角"□"に変換し…

Salesforce: Apexで共有オブジェクト(・・Share)にロールを指定する

Salesforceで特定のユーザにデータを参照・編集させる設定は、共有設定を使うか、Apexで共有オブジェクトを操作するかになります。 共有オブジェクトに特定のユーザのロールを指定したい時があります。 例えば、代表者(User)を入力すると、その代表者は「参…

Salesforce: ユーザの「承認申請メールを受信する」項目をまとめて更新したい時

結論として、データローダや、ApexClassでまとめて更新する手段が用意されていないようです。少し作業を効率化できるちょっとしたアイデアを書きます。 「承認申請メールを受信する」項目をまとめて更新したい時 例えば、そもそも承認申請のメールが不要であ…

Salesforce: メタデータ「フィード条件(CustomFeedFilter)」エクスポート時にエラーとなる件

エクスポートしようとするとエラーが発生するメタデータコンポーネントがあります。それは、「フィード条件(CustomFeedFilter)」なのですが、エクスポートしようとすると"UNKNOWN_EXCEPTION msg: null: Need to specify full name, Name:XXX, Delimiter:."と…

Salesforce: データローダのコマンドライン操作のメモ

ETLツールがない場合など、Salesforceとのバッチ連携はCSVファイルとデータローダのコマンドラインの組み合わせで行うことになると思います。(APIで開発は意外と手間がかかります) データローダをコマンドラインで使った際のメモを書いておこうと思います…

Salesforce: データ移行時のトリガスキップについて考えたこと

データ移行では、既存のデータを確実に移行したいのでトリガを動かしたくない時があると思います。その制御の方法について考えてみました。 No.3のユーザのカスタム項目の制御がいいかなと思っていますが、要件として、トリガをスキップしたい時スキップした…

Salesforce: EventLogFileのユニークキー

監査ログとしてEventLogFileの内容をデータベース、Database.com、AnalyticsCloudなど別の仕組みへ蓄積したい場合があると思います。 ユニークなキーが欲しいなと思い調べたのですが、結論として、イベントログのCSVの中には、キー項目はありませんでした。…

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

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

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

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

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

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