ビュー固有のカスタムアクションを追加する方法を説明します。カスタムアクションでは複数の選択したレコードをパラメーターとしてURLに渡して開くことができます。URLとして指定できるVisualforceページ、フローおよび外部サイトとの連携を行うことができます。
カスタムアクションは「高度なデザイン」画面の「アクション」タブから追加することができ、「+アクション」をクリックすることでカスタムアクションを追加できます。「+アクション」をクリックして表示された「アクションの追加」画面で設定を行います。

「アクションの追加」画面 > 「一般設定」タブ:

| 設定項目 | 詳細 |
|---|---|
| ラベル | カスタムアクションの表示名です。 |
| URL | 開くURLです。絶対パスおよび相対パスのどちらも指定可能です。 |
| URLリクエストメソッド | URLにアクセスする際のHTTPメソッドです。「GET」と「POST」を指定できます。 |
| 配列値のシリアライズ方法 | 複数レコードが選択されている場合のパラメーターの渡し方です。「カンマ区切り」と「パラメーターを多重化」、「配列インデックスを付与」を指定できます。 |
カンマ区切り - 値をカンマ区切りで連結してパラメーターを渡します。例えば、パラメーター名が「id」で、値が「111」「222」「333」の場合は「id=111,222,333」となります。
パラメーターを多重化 - 同じパラメーター名で複数のパラメーターを渡します。例えば、パラメーター名が「id」で、値が「111」「222」「333」の場合は「id=111&id=222&id=333」となります。
配列インデックスを付与 - パラメーター名に配列のインデックスをつけてパラメーターを渡します。例えば、パラメーター名が「id」で、値が「111」「222」「333」の場合は「id[0]=111&id[1]=222&id[2]=333」となります。
「アクションの追加」画面 > 「パラメーター」タブ:
カスタムアクションのパラメーターにはRaySheetの列の値とRaySheetを埋め込んだレコードページのIDをパラメーターとして使用することが出来ます。

①列の値をパラメーターに設定:
| 設定項目 | 詳細 |
|---|---|
| パラメーター名 | URLに渡すパラメーターの名前です。 |
| パラメーター値 | URLに渡すパラメーターの値です。値として設定するレコードの項目を指定します。必要に応じてURLエンコードやExcel関数を使用できます。「fx」をクリックするとExcel数式などを指定する画面が開きます。 |
パラメーターは複数設定できます。「+パラメーター」と「×」で追加と削除ができます。
パラメーター値に設定する項目はRaySheetのビューに列として追加が必要です。
②レコードページのIDをパラメーターに設定:
| 設定項目 | 詳細 |
|---|---|
| レコードページのIdをパラメーターに含める | チェックを付けるとレコードページのIDを使用できます。このカスタムアクションのビューがレコードページに埋め込まれていない場合はNULLになります。 |
| パラメーター名 | URLに渡すレコードページのIDのパラメーターの名前です。 |
URLには絶対パスおよび相対パスのどちらも指定できます。ただし、Visualforceページ及びフローの相対パス指定時には注意が必要です。名前空間のある場合とない場合、VisualforceページとフローのどちらかによりURLの指定方法が異なります。
| 種類 | フロー、Visualforceページの名前例 | 名前空間例 | 相対パスの指定例 |
|---|---|---|---|
| Visualforcreページ | vf1 | ns1 | apex/ns1__vf1 |
| Visualforcreページ | vf1 | なし | apex/c__vf1 |
| フロー | flow1 | ns1 | flow/ns1/flow1 |
| フロー | flow1 | なし | flow/flow1 |
カスタムアクションは「ツールバー」の「アクション」または行の「コンテキストメニュー」から実行できます。
「ツールバー」 > 「アクション」:

行の「コンテキストニュー」:

Visualforceページの実行例として、取引先レコードから取引先名をVisualforce画面に表示します。
Visualforceを作成する。Visualforceページの表示名と名前を「WelcomeToRaySheet」とし、以下のコードを記述する。
<apex:page standardController="Account">
Welcome to RaySheet world, {!$CurrentPage.parameters.name}!
</apex:page>
取引先のビューを開き、「高度なデザイン」画面の「アクション」タブを表示する。
「+アクション」をクリックして「アクションの追加」画面を表示する。
「一般設定」タブに以下の画面のように入力する。

| 設定項目 | 設定値 |
|---|---|
| ラベル | 取引先名の表示 |
| URL | apex/c__WelcomeToRaySheet |
| URLリクエストメソッド | GET |
| 配列値のシリアライズ方法 | カンマ区切り |
「パラメーター」タブに以下の画面のように入力する。

| 設定項目 | 設定値 |
|---|---|
| パラメーター名 | name |
| パラメーター値 | ENCODEURL([取引先名]) |
「アクションの追加」画面の「OK」をクリックし設定を保存する。
実行結果を確認する。取引先レコードを選択し「取引先名の表示」をクリックすることで、選択した取引先レコードの取引先名がVisualforce画面に表示されます。

フローの実行例として、選択した商談レコードの完了予定日を翌月末に更新します。
「一般設定」タブに以下の画面のように入力する。

| 設定項目 | 設定値 |
|---|---|
| ラベル | 完了予定日の設定 |
| URL | flow/SetCloseDate_flow |
| URLリクエストメソッド | GET |
| 配列値のシリアライズ方法 | パラメーターを多重化 |
「パラメーター」タブに以下の画面のように入力する。

| 設定項目 | 設定値 |
|---|---|
| パラメーター名 | OpportunityIDs |
| パラメーター値 | [商談 ID] |
「アクションの追加」画面の「OK」をクリックし設定を保存する。
実行結果を確認する。商談レコードを選択し「完了予定日の設定」をクリックすることで、選択した商談レコードの完了予定日が翌月末に更新されます。

外部サイトの実行例として、選択した取引先レコードの取引先名で検索します。
「一般設定」タブに以下の画面のように入力する。

| 設定項目 | 設定値 |
|---|---|
| ラベル | WEBサイトの検索 |
| URL | https://www.google.com/search? |
| URLリクエストメソッド | GET |
| 配列値のシリアライズ方法 | カンマ区切り |
「パラメーター」タブに以下の画面のように入力する。

| 設定項目 | 設定値 |
|---|---|
| パラメーター名 | q |
| パラメーター値 | ENCODEURL([取引先名]) |
「アクションの追加」画面の「OK」をクリックし設定を保存する。
実行結果を確認する。取引先レコードを選択し「WEBサイトの検索」をクリックすることで、選択した取引先レコードの取引先名で検索が行われます。

RaySheetのカスタムアクションはSalesforceのフローと連携することができます。「フローの実行例」で使用したサンプルフローの作成手順は以下の通りです。
このフローは商談IDのコレクションを入力として、コレクション内の商談IDと一致する商談レコードの完了予定日を翌月末に更新するフローです。
フローで使用する新規リソースを3つ作成する。
商談IDのコレクション:
| 設定項目 | 設定値 |
|---|---|
| リソース種別 | 変数 |
| API 参照名 | OpportunityIDs |
| データ型 | テキスト |
| 複数の値を許可(コレクション) | ON |
| 入力で使用可能 | ON |
商談ID:
| 設定項目 | 設定値 |
|---|---|
| リソース種別 | 変数 |
| API 参照名 | OpportunityID |
| データ型 | テキスト |
| 複数の値を許可(コレクション) | OFF |
| 入力で使用可能 | OFF |
完了予定日:
| 設定項目 | 設定値 |
|---|---|
| リソース種別 | 数式 |
| API 参照名 | CloseDate |
| データ型 | 日付 |
| 数式 | IF( MONTH( TODAY() ) <= 10, DATE( YEAR( TODAY() ), MONTH( TODAY() ) + 2,1) -1, DATE( YEAR( TODAY() ) +1,MONTH( TODAY() )-10, 1) -1) |
「ループ」をドラッグアンドドロップして以下のように設定する。
| 設定項目 | 設定値 |
|---|---|
| 表示ラベル | opp_loop |
| API 参照名 | opp_loop |
| コレクション変数 | {!OpportunityIDs} |
| 方向 | 最初の項目から最後の項目へ |
| ループ変数 | {!OpportunityID} |
「レコードを更新」をドラッグアンドドロップして以下のように設定する。
| 設定項目 | 設定値 |
|---|---|
| 表示ラベル | SetCloseDate |
| API 参照名 | SetCloseDate |
| 更新するレコードを検索してその値を設定する方法 | レコードを識別する条件を指定し、項目を個別に設定 |
| オブジェクト | 商談 |
| 条件の要件 | 条件を満たしている |
| 項目(絞り込み) | Id |
| 演算子(絞り込み) | 次の文字列と一致する |
| 値(絞り込み) | {!OpportunityID} |
| 項目(項目値) | CloseDate |
| 値(項目値) | {!CloseDate} |
「開始」と「ループ」をつなぐ。
「ループ」と「レコードを更新」つなぐ。「ループコネクタ」は「コレクション内の項目ごと」を選択する。
「レコードを更新」と「ループ」をつなぐ

保存をクリックして以下のように設定する。
| 設定項目 | 設定値 |
|---|---|
| フローの表示ラベル | SetCloseDate_flow |
| フローのAPI 参照名 | SetCloseDate_flow |
| 種別 | 自動起動フロー |