海外のSalesforce DeveloperがVisualforceをつかったSalesforce1アクションについてのブログを公開していたので、Dev環境で試してみました。

上記リンク先ではリードオブジェクトのステータスを更新する処理が紹介されていました。同じようにリード状況項目の値を「Working - Contacted」に更新するアクションを試してみました。

VisualforceページとApexクラスを次のように作成します。
LeadWorkingAction.page
<apex:page standardController="Lead" extensions="LeadWorkingActionController" action="{!init}" tabStyle="Lead">
</apex:page>
LeadWorkingActionController.cls
public with sharing class LeadWorkingActionController {
// リード情報
private Lead lead = new Lead();
/**
* コンストラクタ
*/
public LeadWorkingActionController(ApexPages.StandardController controller) {
this.lead = (Lead) controller.getRecord();
}
/**
* Init
*/
public PageReference init() {
// リード状況を更新
this.lead.Status = 'Working - Contacted';
update this.lead;
return new PageReference('/' + this.lead.Id);
}
}
Visualforceページ作成後は『Salesforce モバイルアプリケーションおよび Lightning ページでの使用が可能』にチェックをつけてSalesforce1アプリで利用できるように権限を追加します。

続いてアクションの作成です。新しいアクションは設定の「ボタン、リンク、およびアクション」から作成できます。

アクション種別に「カスタム Visualforce」を指定すると対象のVFページを選択できるようになります。

ちなみにアクションのアイコンを変更するには、静的リソースにアップしておく必要があります。

これでアクションの設定が完了です。

次は作成したアクションをページレイアウトに追加します。

これでSalesforce1アプリのアクションバーにアクションが表示されます。追加したWorking!アクションをクリックするとステータスが無事に更新されました。

ひとつうまく行かなかったのですが、更新後の画面遷移がうまく実行できませんでした。何か処理が漏れてるのかもしれません。

今回、ステータスを更新→詳細ページへ移動というアクションを試してみましたが、普通にVisualforceページを表示することも可能です。

VFページを表示するとこんな感じです。

アクション標準のヘッダーはapex:pageタグで『showQuickActionVfHeader="false" 』を宣言すると非表示にできます。
