Force.com Canvas フレームワークには、Visualforce を使用せずに、キャンバスアプリケーションと Salesforce アプリケーション間のナビゲーションを円滑に統合するために使用できるメソッドが含まれます。
以前は、キャンバスアプリケーションが含まれる iframe のナビゲーションの制限を回避するには、Visualforce ページを使用するしかありませんでした。これらの Force.com Canvas のメソッドには、Salesforce アプリケーションでのキャンバスアプリケーションへの移動またはキャンバスアプリケーションからの移動を制御するシンプルな代替手段が用意されています。
たとえば、キャンバスアプリケーションのコードで Salesforce の「レコード作成」ロジックをコールして、[アカウントを作成] ボタンが存在するページに移動できます。このボタンをクリックすると、navigation メソッドがトリガされて、キャンバスアプリケーションの外部にあるレコード作成ページに移動します。
Force.com Canvas フレームワーク内のこれらのメソッドは、JavaScript ライブラリにあるイベントです。いずれかの navigation メソッドをキャンバスコードからコールすると、Salesforce にイベントが送信されます。Salesforce は、このペイロードを読み取って指定の移行先にユーザを移動します。
キャンバスアプリケーションからメソッドをコールするのは、Visualforce ページから関数をコールするのとは若干異なります。これは、メソッドが Force.com Canvas のクロスドメイン API を介して Salesforce コンテナにプロキシされるからです。
名前とペイロードを使用して、navigation メソッドをイベント変数として参照します。次に例を示します。
var event = {name:"s1.createRecord", payload: {entityName: "Account", recordTypeId: "00h300000001234"}};
次の表に、Salesforce の navigation メソッドの名前、ペイロード、目的を示します。
| back([refresh]) |
sforce.one 履歴に保存されている、以前の状態に移動します。ブラウザの [戻る] ボタンをクリックするのと同じです。 refresh は省略可能です。デフォルトでは、ページは更新されません。可能な場合は true を渡してページを更新します。
|
| navigateToSObject(recordId[, view]) |
recordId で指定した sObject レコードに移動します。このレコードの「ホーム」には複数のビューがあり、このビューは Salesforce アプリケーション内で、ユーザがスワイプして移動するスライドとして表示されます。 view は省略可能であり、デフォルトは detail です。view には最初に表示する、レコードのホーム内のスライドを指定します。
ContentNote sObject に対応するレコード ID はサポートされていません。
使用できる値は次のとおりです。
-
detail: レコード詳細スライド
-
chatter: Chatter スライド
-
related: 関連スライドのビュー
|
| navigateToURL(url[, isredirect]) |
指定した URL に移動します。
相対 URL と絶対 URL がサポートされています。相対 URL は Lightning ドメインに対して相対的で、ナビゲーション履歴を保持します。外部 URL、つまり Lightning ドメインの外部の URL は別のブラウザウィンドウに開きます。 ユーザのデバイスプラットフォーム、デバイス設定、Salesforce のバージョン、および開いている外部 URL の認証要件によっては、別のブラウザに認証や再認証が必要な場合があります。
アプリケーション内のさまざまな画面に移動するには相対 URL を使用します。ユーザに別のサイトまたはアプリケーションへのアクセスを許可するには外部 URL を使用します。ユーザは移動先のサイトまたはアプリケーションで、元のアプリケーションに保持する必要のないアクションを実行できます。ユーザが元のアプリケーションに戻るには、別のアプリケーションを終了したときに、外部 URL によって開かれた別のウィンドウを閉じる必要があります。この新しいウィンドウは、元のアプリケーションとは別の履歴を持ち、ウィンドウを閉じるとこの履歴は破棄されます。つまり、ユーザは [戻る] ボタンをクリックして元のアプリケーションに戻ることはできません。ユーザは新しいウィンドウを閉じる必要があります。
外部アプリケーションを起動し、ユーザが適切な操作を行えるようにするため、mailto:、tel:、geo: などの URL スキームがサポートされています。ただし、サポートはモバイルプラットフォームとデバイスによって異なります。mailto: と tel: は信頼できますが、他の URL については、使用が想定されるさまざまなデバイスでテストすることをお勧めします。
isredirect は省略可能であり、デフォルトは false です。ナビゲーション履歴の現在の URL を新しい URL に置き換えるようにするには、 true に設定します。 ContentNote sObject に対応する URL はサポートされていません。
|
| navigateToFeed(subjectId, type) |
subjectId で絞り込んだ、指定した type のフィードに移動します。一部のフィード type では、subjectId は必須ですが無視されます。これらのフィード type では、現在のユーザの ID を subjectId として渡します。
type はフィードの種別です。使用できる値は次のとおりです。
-
BOOKMARKS:コンテキストユーザがブックマークとして保存したすべてのフィード項目が含まれます。現在のユーザの ID を subjectId として渡します。
-
COMPANY:種別が TrackedChange のフィード項目を除くすべてのフィード項目が含まれます。ユーザがフィード項目を表示するには、親への共有アクセス権が必要です。現在のユーザの ID を subjectId として渡します。
-
FILES:コンテキストユーザがフォローしている人またはグループによって投稿されたファイルを含むすべてのフィード項目が含まれます。現在のユーザの ID を subjectId として渡します。
-
GROUPS:コンテキストユーザが所有するか、メンバーであるすべてのグループのすべてのフィード項目が含まれます。現在のユーザの ID を subjectId として渡します。
-
NEWS:コンテキストユーザがフォローする人、ユーザがメンバーとなっているグループ、およびユーザがフォローしているファイルとレコードのすべての更新が含まれます。親がコンテキストユーザであるレコードのすべての更新が含まれます。コンテキストユーザをメンションするかコンテキストユーザがメンバーとなっているグループをメンションするすべてのフィード項目とコメントが含まれます。現在のユーザの ID を subjectId として渡します。
-
PEOPLE:コンテキストユーザがフォローしているすべての人によって投稿されたすべてのフィード項目が含まれます。現在のユーザの ID を subjectId として渡します。
-
RECORD:親が指定されたレコードであるすべてのフィード項目が含まれます。レコードは、グループ、ユーザ、オブジェクト、ファイル、その他の標準またはカスタムオブジェクトの場合があります。レコードがグループの場合、フィードにはそのグループにメンションしているフィード項目も含まれます。レコードがユーザの場合、フィードにはそのユーザに対するフィード項目のみが含まれます。別のユーザのレコードフィードは取得できません。レコードの ID を subjectId として渡します。
-
TO:コンテキストユーザのメンションを含むすべてのフィード項目が含まれます。コンテキストユーザがコメントしたフィード項目、コンテキストユーザが作成し、コメントされたフィード項目が含まれます。現在のユーザの ID を subjectId として渡します。
-
TOPICS:指定したトピックを含むすべてのフィード項目が含まれます。トピックの ID を subjectId として渡します。この値は、モバイル Web の Salesforce でのみサポートされます。トピックは、Salesforce for iOS または Salesforce for Android では使用できません。
|
| navigateToFeedItemDetail(feedItemId) |
特定のフィード項目 feedItemId と関連付けられたコメントに移動します。 |
| navigateToRelatedList(relatedListId, parentRecordId) |
parentRecordId の関連リストに移動します。たとえば、Warehouse オブジェクトの関連リストを表示する場合、parentRecordId は Warehouse__c.Id です。 relatedListId は、表示する関連リストの API 名または ID です。
|
| navigateToList(listViewId, listViewName, scope) |
listViewId (表示されるリストビューの ID) で指定されたリストビューに移動します。 listViewName にリストビューのタイトルを設定します。リストビューに保存されている実際の名前と一致する必要はありません。保存されている名前を使用するには、listViewName を null に設定します。
scope に、ビュー内の sObject の名前 (「Account」や「MyObject__c」など) を設定します。
|
| createRecord(entityName[, recordTypeId][, defaultFieldValues]) |
指定した entityName (「Account」や「MyObject__c」など) のレコードを作成するページを開きます。 recordTypeId は省略可能ですが、作成されるオブジェクトのレコードタイプを指定します。recordTypeId を指定しないで createRecord を呼び出すと、エラーになることがあります。
defaultFieldValues は省略可能ですが、指定すると、パネルに表示されていない項目を含め、レコード作成パネルに項目が事前入力されます。ユーザには、値が事前入力される項目に対する作成アクセス権が必要です。項目のアクセス制限によって発生した保存時のエラーは、エラーメッセージには表示されません。
|
| editRecord(recordId) |
recordId で指定したレコードを編集するページを開きます。 |
Visualforce で使用する navigation メソッドについての詳細は、『Salesforce アプリケーション開発者ガイド』を参照してください。