[Salesforce]Visualforceのキャンセルボタンの必須チェック不要処理

Visualforceでinputfieldでキャンセルボタン時には必須を適用させたくない場合に、以下の例で対応する。

<apex:commandButton action="{!cancel}" value="Cancel" immediate="true"/>

ポイントは、「immediate=”true”」パラメータで対応可能となります。

上記のパラメータがないと、キャンセルボタン押下時にも必須チェックが行われる。

[Salesforce]月末日計算ロジック

Apexで月末日を計算するロジックを共有します。

date dateField = date.newInstance(1987, 12, 17);
Integer numberOfDays = Date.daysInMonth(dateField.year(), dateField.month());
Date lastDayOfMonth = Date.newInstance(dateField.year(), dateField.month(), numberOfDays);
system.debug('lastDayOfMonth:'+lastDayOfMonth);

[Salesforce]デバッグログ一括削除

Salesforceのデバッグログを一括削除する手順を共有します。

1.開発コンソルを開く

2.Query Editorにて、以下のSQL文を実行する。

select Id from ApexLog

3.Query Resultsに出力されたデバッグログIDを全選択して、「Delete Row」ボタン押下する。

そのほかの削除方法は以下です。

データローダで「デバッグログ」をExportしてDeleteする。

[Salesforce]カスタム設定の設定種別をリスト選択肢表示

カスタム設定画面にて設定種別の選択肢としてリストを表示するための設定は以下です。

設定 > 検索 > スキーマ

検索結果で、スキーマ設定にて、
リストカスタム設定の種別を管理を有効化します。

[Salesforce]ランダム文字列生成メッソド

Salesforceでランダム文字列生成メッソドを共有します。

	public String getRandomString(integer LengthRequired){
		String small = 'abcdefghijklmnopqrstuvwxyz';
	    String big = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	    String num = '0123456789';
	    String max = small + big + num;
	    String result = '';
	    integer position;
	    
	    List<String> random = new List<String> ();
	    // 英小文字から最低1文字選択
	    position = Integer.valueof(String.valueof(Math.roundToLong((small.length()-1)*Math.random())));
	    random.add(small.substring(position,position+1));
	    // 英大文字から最低1文字選択
	    position = Integer.valueof(String.valueof(Math.roundToLong((big.length()-1)*Math.random())));
	    random.add(big.substring(position,position+1));
	    // 数字から最低1文字選択
	    position = Integer.valueof(String.valueof(Math.roundToLong((num.length()-1)*Math.random())));
	    random.add(num.substring(position,position+1));
	    
	    // 残りの文字を全文字を対象にランダムで選択
	    for(Integer i = 0; i < LengthRequired - 3; i++) {
	        position = Integer.valueof(String.valueof(Math.roundToLong((max.length()-1)*Math.random())));
	        random.add(max.substring(position,position+1));
	    }
	    
	    // 文字列の並び回を最低回数繰り返す
	    for(Integer i=0; i< 100; i++) {
	    	Integer bef = Integer.valueof(String.valueof(Math.roundToLong((random.size()-1)*Math.random())));
	    	Integer aft = Integer.valueof(String.valueof(Math.roundToLong((random.size()-1)*Math.random())));
	    	String tmp = random[bef];
	    	random[bef] = random[aft];
	    	random[aft] = tmp; 
	    }
	    
	    for(String s : random) {
	    	result += s;
	    }
	    
	    return result;
		
	}
	

メッソド呼び出し

system.debug(getRandomString(6))

メッソド呼び出し結果

例えば、abcdef

[Salesforce]Apex RESTコールアウト

Salesforceからコールアウトを実行して、外部サービスを受信する。

GETの例

Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://th-apex-http-callout.herokuapp.com/animals');
request.setMethod('GET');
HttpResponse response = http.send(request);
// If the request is successful, parse the JSON response.
if (response.getStatusCode() == 200) {
    // Deserialize the JSON string into collections of primitive data types.
    Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
    // Cast the values in the 'animals' key as a list
    List<Object> animals = (List<Object>) results.get('animals');
    System.debug('Received the following animals:');
    for (Object animal: animals) {
        System.debug(animal);
    }
}

[Salesforce]VisualforceからCSV出力

VisualforceからCSV出力することについて共有します。

1.Visualforce作成する。

Visualforceページ名 : VFTab

<apex:page contentType="text/csv;charset=Shift_JIS;#fileName.csv" standardController="Contact" recordSetVar="contacts">Id,Name
    <apex:repeat value="{!contacts}" var="con">
{!con.Id},{!con.Name}
    </apex:repeat>
</apex:page>

説明

① text/csv

CSV出力

② charset

Excelで開くためにシフトJISを指定

③ #fileName.csv

ファイル名指定

④ Id,Name

ヘッダ部

⑤ {!con.Id},{!con.Name}

データ部

Salesforceはデフォルトの文字コードUTF-8である。

2.Visualforceタブ作成、手順1.Visualforceページを設定する。

Visualforceタブ名:VFTab

3.動作確認するする。

手順2.で作成じたタブ「VFTab」を押下する。

「filename.csv」ファイルがダウンロードされることを確認する。

ファイル中身は以下のようです。

Id	Name
0030K00001p3ReGQAU	Barr Tim
0030K00001p3ReHQAU	Bond John
0030K00001p3ReJQAU	Boyle Lauren
0030K00001p3ReLQAU	Davis Josh
0030K00001p3ReQQAU	D'Cruz Liz
0030K00001rMwdWQAS	ddd
0030K00001p3ReCQAU	Forbes Sean
0030K00001p3ReRQAU	Frank Edna
0030K00001p3ReBQAU	Gonzalez Rose
0030K00001p3ReSQAU	Green Avi
0030K00001p3ReMQAU	Grey Jane
0030K00001p3ReOQAU	James Ashley
0030K00001rMylnQAC	jjj
0030K00001p3ReKQAU	Levy Babara
0030K00001p3ReUQAU	Llorrac Jake
0030K00001p3ReTQAU	Nedaerk Siddartha
0030K00001p3ReIQAU	Pavlova Stella
0030K00001p3RePQAU	Ripley Tom
0030K00001p3ReDQAU	Rogers Jack
0030K00001p3ReNQAU	Song Arthur

[Salesforce]VSCodeによる開発

開発環境としてVSCodeのExtensionを用いることについて共有します。

  1. Salesforce CLIをインストール
sfdx plugins --core

2.VS Codeに拡張機能のインストール

https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode

3.ローカルにプロジェクトを作成

コマンドパレットを開き(Widnowsの場合:Ctrl+Shift+P / Macのばあい:Cmd+Shift+P)、SFDX: Create Project with Manifestを選択し、プロジェクト名入力しEnterする。

保存場所を選択する。

例えば、Projectというフォルダ名を指定すると、指定したProjectフォルダの下に、入力したプロジェクト名のフォルダに新たに作成されます。

作成したProjectの下に以下のフォルダ、ファイルが作成されます。
.sfdx
.vscode
config
force-app
manifest
.forceignore
.gitignore
.prettierignore
.prettierrc
README.md
sfdx-project.json

4.組織に接続

表示> コマンドパレットから、SFDX: Authorize an Orgを選択、組織の種類(Sandbox/Production)を選択して、プロジェクト名称を入力する。

ブラウザが起動し、その組織にログインする。

アクセスを許可しますか? が表示される、「許可」ボタン押下する。

VSCodeで以下のように出力されれば接続できています。

Successfully authorized xxxx@xxx.xxx with org ID 00Dxxxxxxxxxxxxxxx
You may now close the browser

5.メタデータの取得とデプロイ

force-appのエクスプローラで右クリックするとSFDX: Retrieve Source from OrgとSFDX: Deploy Source to Orgが利用できる。
特定のフォルダやファイルに対してこのコマンドを選択すると、そのフォルダやファイルに対してのみ取得・デプロイされる。

6.ファイル保存時の自動デプロイを有効化する

.vscode/settings.jsonに"salesforcedx-vscode-core.push-or-deploy-on-save.enabled": trueを追加し、VS Codeを再起動する。

[Salesforce]Lightningコンポーネント削除

作成したLightningコンポーネントを削除する手順を共有します。

1.開発コンソル開く

2.コンポーネントコントローラ開いて、FileメニューでDeleteする。

3.コンポーネントヘルパー開いて、FileメニューでDeleteする。

4.コンポーネントCSS開いて、FileメニューでDeleteする。

5.コンポーネントを開いて、FileメニューでDeleteする。