# カスタムアクション

## URLを開く <a href="#open-url" id="open-url"></a>

あらかじめ指定したURLを新規ウィンドウで開きます。その際、選択したレコードの項目情報をパラメータとして引き渡すことができます。

「URLを開く」アクションボタンには以下のプロパティを設定できます。

* **ボタンの表示ラベル** – ボタンの中に表示するラベルをカスタマイズして設定します
* **ボタンの表示アイコン** – ボタンの中のラベル横に表示するアイコンを設定します
* **ボタンが有効になるタイミング** – ボタンをクリック可能になるタイミングについて指定します。以下の選択肢から選択可能です
  * **いつでも** - ボタンはいつでもクリック可能です
  * **レコードの選択時**（デフォルト） - ボタンはレコードが選択チェックボックスで選択されているときに有効になります
* **ページのURL** – ボタンを押した際に開くページのURLを設定します

「詳細設定」リンクをクリックすることで、「URLを開く」アクションの詳細設定を編集することができます。

![](https://2817247209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FS2wT6ommdiuYru74JEtd%2Fuploads%2Fgit-blob-c72667bc9de676299aeb5808a0f4b3c0d6647aee%2Ffig018.png?alt=media)

* **URLパラメータ値のマッピング \[A]** – ページURLを開く際に受け渡すパラメータとレコードの項目名のマッピングを設定します。「URLパラメータを追加」ボタンをクリックして複数のパラメータを設定できます。
* **URLリクエストメソッド \[B]** – ページURLにアクセスする際のHTTPメソッドを指定します。GETメソッドでアクセスする場合、URLパラメータはクエリ文字列としてURLに付加されて渡されます。
* **配列値のシリアライズ方法 \[C]** – 複数レコードが選択されているとき、項目値をパラメータで渡す際の方法について設定します。
  * **コンマ区切り** - 値をすべてコンマ(,)で連結した形でパラメータに渡します。例えばパラメータ名が `id` で 、選択されたレコードの項目値が `AAA, BBB, CCC` である場合、ページURLへ送信されるパラメータのフォーマットは `id=AAA,BBB,CCC` という形式になります。
  * **パラメータを多重化** - 同一のパラメータ名で複数のURLパラメータを送信します。例えばパラメータ名が `id` で、選択されたレコードの項目値が `AAA, BBB, CCC` である場合、ページURLへ送信されるパラメータのフォーマットは `id=AAA&id=BBB&id=CCC` という形式になります。
  * **配列インデックスを付与** - パラメータ名に配列のインデックスを付けた形でURLパラメータを送信します。例えばパラメータ名が `id` で、選択されたレコードの項目値が `AAA, BBB, CCC` である場合、ページURLへ送信されるパラメータのフォーマットは `id[0]=AAA&id[1]=BBB&id[2]=CCC` という形式になります。

## フローを開始 <a href="#start-flow" id="start-flow"></a>

Salesforceプラットフォームの提供する自動化プロセス機能の一つである「フロー」を開始するアクションです。フロービルダーで作成した画面フローを呼び出すことができます。

画面フロー内に定義された画面はアクションの実行時にダイアログで表示されるので、ユーザの入力を受け取る事が可能です。

さらに、フローに対してシート内で選択中のレコードの情報を入力変数として引き渡すことができます。これにより選択したレコードを一括で処理するロジックを自由に作成して呼び出すことが可能です。

「フローを開始」アクションボタンには以下のプロパティを設定できます。

* **ボタンの表示ラベル** – ボタンの中に表示するラベルをカスタマイズして設定します
* **ボタンの表示アイコン** – ボタンの中のラベル横に表示するアイコンを設定します
* **ボタンが有効になるタイミング** – ボタンをクリック可能になるタイミングについて指定します。以下の選択肢から選択可能です
  * **いつでも** - ボタンはいつでもクリック可能です
  * **レコードの選択時**（デフォルト） - ボタンはレコードが選択チェックボックスで選択されているときに有効になります

「詳細設定」リンクをクリックすることで、「フローを開始」アクションの詳細設定を編集することができます。

![](https://2817247209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FS2wT6ommdiuYru74JEtd%2Fuploads%2Fgit-blob-97d155f570edaf3380c57ae7846d166f8a1cb18e%2Fstart_flow_action_detail_dialog.png?alt=media)

* **\[A] フローのAPI参照名** - アクションで開始するフローのAPI参照名を指定します。フローのAPI参照名はフロービルダーのプロパティ設定から確認できます。
* **\[B] 入力変数名** - フローが入力として使用可能な変数リソースを用意しているとき、その変数の名前を指定します。
* **\[C] データ型** - 変数のデータ型を指定します。以下のデータ型が指定可能です。
  * **テキスト**
  * **数値**
  * **真偽値（Boolean）**
  * **レコード**
* **\[D] 値** - 変数に渡す値を指定します。データ型が「テキスト」の場合、直接その値を指定する以外に、参照値を選択することも可能です。「数値」「真偽値」の場合は直接その値を指定します。「レコード」の場合は以下の2種類から選択可能です。
  * **選択されたレコード** - シート内で現在選択中のレコードの情報を変数として指定します
  * **すべてのレコード** - シート内のすべてのレコードの情報を変数として指定します
* **\[E] 入力変数を追加** - 入力変数を設定する行を一行追加します。
* **\[F] フロー表示画面の大きさ** - 画面フローを表示するダイアログの横幅の大きさを指定します。「小（デフォルト）」「中」「大」の３種類が選択可能です。
* **\[G] フロー完了後にレコードを再読み込み** - フローが正常に完了した際に、シート内のレコードの再読み込みを行います。通常はシート内で選択中のレコードのみが再読み込みされます。
* **\[H] シート内の全レコードを読み込む** - フロー完了後に再読み込みを行う際に、シート内のデータを強制的に更新して再取得します。「フロー完了後にレコードを再読み込み」がチェックされている場合のみ設定可能です。

{% hint style="info" %}
入力変数に指定する変数の変数名は、フローで定義されている変数名と一致している必要があります。フローで定義されていない、あるいは入力での使用を許可されていない変数名を指定した場合、フローの実行はエラーとなります。またデータ型についてもフローで定義されているデータ型と一致している必要があります。
{% endhint %}

{% hint style="info" %}
入力変数のデータ型として「レコード」を指定した場合、対応するフローの変数リソースは「複数の値を許可 (コレクション)」を有効にして定義する必要があります。
{% endhint %}

## カスタムイベント <a href="#custom-event" id="custom-event"></a>

Message Channel APIで捕捉可能なカスタムイベントを発行します。Message Channel APIとカスタムイベントの詳細については、「[Message Channel APIによる連携アプリケーションの開発](https://docs.mashmatrix.com/mashmatrix-sheet/ja/customization/developing_apps_using_message_channel_api)」を参照してください。

「カスタムイベント」アクションボタンには以下のプロパティを設定できます。

* **ボタンの表示ラベル** – ボタンの中に表示するラベルをカスタマイズして設定します
* **ボタンの表示アイコン** – ボタンの中のラベル横に表示するアイコンを設定します
* **ボタンが有効になるタイミング** – ボタンをクリック可能になるタイミングについて指定します。以下の選択肢から選択可能です
  * **いつでも** - ボタンはいつでもクリック可能です
  * **レコードの選択時**（デフォルト） - ボタンはレコードが選択チェックボックスで選択されているときに有効になります
* **イベント名** – Message Channel APIのサブスクライバが識別可能なイベント名を設定します
