Salesforce技術ブログ:なぜか使えない、VisualforceページをLightning Experienceのクイックアクションで起動したときの「保存」ボタンの使い方!

Salesforce技術ブログ:なぜか使えない、VisualforceページをLightning Experienceのクイックアクションで起動したときの「保存」ボタンの使い方!

Salesforce技術ブログ:なぜか使えない、VisualforceページをLightning Experienceのクイックアクションで起動したときの「保存」ボタンの使い方!

こんにちは、ばゆうです。

皆さんはスマートスピーカーは購入済みでしょうか?

私は去年Google Homeが半額の時に購入して、IFTTTでいろいろ連携してみたいと思いつつも、

Chromecastと連携してテレビを付けたり消したりするだけのマシンと化してしまっています・・・。

時間とお金に余裕があるときにおうちのIoT化を進めていきたいと思います。

Google_Home  

というわけで、今回はVisualforceページをLightning Experienceのクイックアクションで起動したとき、

ポップアップの右下に表示される[保存]ボタンのお話です。

 

無効化された保存ボタン

Visualforceページをクイックアクションで起動すると、モーダルウィンドウの右下に「キャンセル」ボタンと「保存」ボタンが表示されます。



これらのボタンはVisualforceページのソースコードの内容に関わらず表示されているうえ、「保存」ボタンは無効状態になっているため何に使うのかよくわかりませんでした。

そこで、このボタンの使い道は何なのか、どうすれば押せるようになるのかを調べてみたところ、Visualforceページのjavascirptに以下の処理を記述することで「保存」ボタンを有効化できました。
    <apex:includeScript value="/canvas/sdk/js/publisher.js" />
    <script>
        $(document).ready(function(){
            // 保存ボタンをアクティブ化
            Sfdc.canvas.publisher.publish({ name : "publisher.setValidForSubmit", payload:"true"});   
        });
    </script>


 

イベントを付与

「保存」ボタンを有効化しただけでは押しても何も起こらない飾りのままなので、イベントを付与してみたいと思います。

以下のように処理を記述することで、「保存」ボタン押下時に任意の処理を動かすことができるようになります。
    <apex:includeScript value="/canvas/sdk/js/publisher.js" />
    <script>
        $(document).ready(function(){
            // 保存ボタンをアクティブ化
            Sfdc.canvas.publisher.publish({ name : "publisher.setValidForSubmit", payload:"true"});
            // 保存ボタンにイベント付与
            Sfdc.canvas.publisher.subscribe({name: "publisher.post", onData:function(e) {
                alert("保存ボタンが押されました!");
            }});  
        });
    </script>


標準画面風のVisualforceページを作成した時などは、保存ボタンをVisualforceページ側で出力するのではなく、モーダルにデフォルトで表示されているボタンを活用するのがよさそうです。

简体中文English日本語한국어
翻訳