[Salesforce]画面フローにURLのパラメータを渡したい
画面フローって、URLパラメータ取得できないんですよね。
LightningだとApexからも取得できないみたい。
そんな悩みをChatGPTに聞いてみたところ、LWCから画面フロー呼び出してくれるプログラム作ってくれました。
汎用的に利用できるように、Getパラメータの名前、呼び出すフロー名、フローの変数名をプロパティにしました。
<!--画面フローを呼び出すLWC-->
<template>
<lightning-card title="My Flow Component" icon-name="custom:custom63">
<div class="slds-m-around_medium">
<lightning-flow
flow-api-name={flowApiName}
flow-input-variables={flowInputVariables}>
</lightning-flow>
</div>
</lightning-card>
</template>
//Javascript
import { LightningElement, wire, api } from 'lwc';
import { CurrentPageReference } from 'lightning/navigation';
export default class SetParameter2Flow extends LightningElement {
@wire(CurrentPageReference)
pageRef; //ページ情報
@api flowApiName; //呼び出すフロー名
@api getParameterName; //取得するGetパラメータ名
@api setParameterName; //フローのパラメータ名
@api
get parameterValue() {
return this.pageRef.state[this.getParameterName];
}
get flowInputVariables() {
return [
{ name: this.setParameterName, type: 'String', value: this.parameterValue }
];
}
}
<?xml version="1.0"?>
<!--Communityで利用するためのプロパティ-->
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>57.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightningCommunity__Page</target>
<target>lightningCommunity__Default</target>
</targets>
<targetConfigs>
<targetConfig targets="lightningCommunity__Default">
<property name="getParameterName" type="String" label="取得するGetパラメータ名" description="取得するGetパラメータの名前を指定してください"/>
<property name="flowApiName" type="String" label="呼び出すフロー名" description="呼び出す画面フローのAPI参照名を指定してください"/>
<property name="setParameterName" type="String" label="フローのパラメータ名" description="パラメータを渡すフローの変数名を指定してください"/>
</targetConfig>
</targetConfigs>
</LightningComponentBundle>
ページに配置して、以下のプロパティ設定しましょう。
フローに値を渡してくれます。
ユーザさんが対話しながらシステム構築できる日も近いね。
ちなみに、本投稿のサムネイル画像もChatGPTさんに作ってもらいました。
文字はよく見るとおかしいですね。