見出し画像

[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さんに作ってもらいました。
文字はよく見るとおかしいですね。

この記事が気に入ったらサポートをしてみませんか?