Launch 和 Param 函数
适用于: 画布应用
启动网页或画布应用,并提供对启动参数的访问。
Launch
启动网页或画布应用。 此函数支持:
- Address (必需),画布应用网页的 URL。
- Parameters (可选),要传递给网页或画布应用的命名值。 在画布应用中,可以使用 Param 函数读取参数。
- Target (可选),用于启动网页或画布应用程序的浏览器选项卡。
Launch 只能在行为公式 中使用。
备注
如果 Launch 公式用于打开 Power Apps 并且应用程序对最终用户不可见,建议检查应用程序是否被浏览器弹出窗口阻止程序阻止,或者浏览器是否正在等待用户对询问他们是否要导航到新屏幕的对话框的响应。
地址
网页通过 URL 地址启动。 例如:
Launch( "https://bing.com" )
您可以使用网络链接或应用程序 URI(以 /providers/Microsoft.PowerApps/apps/
为前缀的应用程序 ID)启动画布应用程序。 若要查找应用的这些值,请执行以下操作:
转到 Power Apps。
从左侧导航窗格中选择应用。
选择您的应用。
从顶部菜单中选择详细信息。
您还可以选择 ...(更多命令),然后从下拉菜单中选择详细信息。复制 Web 链接。
Web 链接可以在任何网页中使用,将启动画布应用。 它也可以与 Launch 函数一起使用。 例如:
Launch( "https://apps.powerapps.com/e/{environment id}/a/{app id}?tenantId={tenantId}" )
设备上的本机应用无法直接启动。 在某些平台上可能有间接选项可用,例如安装自定义 URL 架构或在 Web 浏览器中注册以为特定网站提供选项的本机应用。
参数
Launch 可以将参数传递给网页或画布应用程序。 可以通过两种方式提供参数:
名称/值对的参数列表。 例如:
Launch( "https://bing.com/search", "q", "Power Apps", "count", 1 )
字段值的记录。 例如:
Launch( "https://bing.com/search", { q: "Power Apps", count: 1 } )
这种形式可以使名称和值之间的关联更加清晰,因此更易于使用。 这是唯一支持可选 LaunchTarget 参数的形式。
地址和参数在传递前经过 URL 编码,来将某些非字母数字字符替换为 %
和十六进制数字,就像 EncodeUrl 函数对每个地址和参数所使用的。
启动网页时,可以在 URL 地址的末尾包含参数的查询字符串。 提供给 Launch 的所有其他参数都将添加到查询字符串的末尾。 启动画布应用时,查询字符串不起作用。
当在已经运行应用程序的移动设备上启动该应用程序时,不会在运行的应用程序中刷新参数。 需要重新加载应用程序才能刷新参数。
Target
使用 LaunchTarget 参数指定在其中打开网页或应用的目标浏览器窗口。 使用以下 LaunchTarget 枚举值之一或提供自定义窗口名称。
LaunchTarget 枚举 | 描述 |
---|---|
新增功能 | 网页或应用会在新窗口或标签页中打开。 |
取代 | 网页或应用将替换当前的窗口或标签页。 |
名字 | 代替枚举值,使用您自己的文本字符串命名窗口或标签页。Self 是仅在内部使用的名称,仅由 Launch 函数使用。 它对用户看到的窗口的标题没有影响,也不会与之匹配。 如果具有给定名称的窗口或标签页已经存在,其内容将被替换。 否则,将创建新窗口或标签页。 name 不能以下划线字符“_”开头。 |
New 是在 Web 浏览器中运行时的默认枚举,其中 Replace 和 name 作为可用选项。 在移动播放器中,New 是将指定作为可用选项的网页的默认设置;而当前的画布应用将始终被另一个画布应用替换。
备注
- 不支持在嵌入式场景中(例如,Power BI 或 SharePoint)将 LaunchTarget 与 New 以外的其他值一起使用,这可能会导致意外行为。 以后,此行为可能会变更,或可能导致错误。
Param
当应用启动时,Param 函数可用于检索传递给应用的参数。 如果没有传递指定的参数,Param 会返回 blank。
- 从另一个画布应用启动画布应用时,请对 Launch 函数使用 Parameter 参数。 参数名称和值将自动进行 URL 编码。
- 从网页启动画布应用时,将参数添加到画布应用 Web 链接的查询字符串中。 假设已经为
tenantId
启动了查询字符串,则需要添加¶metername=parametervalue
。 例如,添加&First%20Name=Vicki&category=3
会传递两个参数:值为"Vicki"
的First Name
和值为"3"
的category
(值类型为文本)。 如果参数名称和值包含空格或特殊字符,则必须进行 URL 编码,类似于使用 EncodeURL 函数。 - 参数名称区分大小写。
- 参数名称和值将自动进行 URL 解码,以在您的应用中使用。
- 除非重新加载应用程序,否则参数值不会改变。 在已经运行应用程序的移动设备上使用启动不会刷新参数。
- 即使参数包含数字,Param 返回的类型也始终是文本字符串。 会自动进行其他类型的转换,或使用显式转换(例如 Value 函数)显式转换为数字。
备注
对于自定义页面,该页面接受的唯一参数是:recordId 和 entityName。
语法
Launch(Address[,ParameterName1,ParameterValue1 ,... ])
- Address(地址 )– 必填。 要启动的网页的网址或应用的 ID。
- ParameterNames —可选。 参数名称。
- ParameterValues —可选。 要传递给应用或网页的相应参数的值。
launch(Address,[ParameterName1: ParameterValue1,... ] { } [, LaunchTarget ])
- Address(地址 )– 必填。 要启动的网页的网址或应用的 ID。
- ParameterNames —可选。 参数名称。
- ParameterValues —可选。 要传递给应用或网页的相应参数的值。
- LaunchTarget –可选。 LaunchTarget 枚举值或自定义名称。
参数( 参数名称 )
- ParameterName - 必需。 传递给应用的参数的名称。
保留参数
以下关键字将保留(无论哪种情况)供内部使用,不应用作 Param() 函数中的自定义参数:
- amp%3Bauthmode
- amp%3Benableonbehalfof
- amp%3Bhidenavbar
- amp%3Blocale
- appmetadataversion
- authmode
- channeltype
- cordovapath
- correlationid
- 调试
- delegatelaunchurl
- delegatelaunchurl
- disablepreviewredirect
- embedderorigin
- enableonbehalfof
- groupid
- hideappsplash
- hidenavbar
- hint
- hostclienttype
- hostmode
- iframecontainerid
- isfullscreen
- ispreviewmode
- loader
- loaderType
- locale
- 位置
- packagekind
- packageproperties
- playerresourcespath
- playersessionid
- powerappslanguage
- screencolor
- sdkversion
- 站点
- skipappmetadata
- skipiframecreation
- skiplaunchappcache
- source
- sourcetime
- standaloneconsent
- teamid
- teamtype
- tenantId
- theme
- uselocalpackagehostresources
- userteamrole
示例
简单启动
从画布应用到网页:
公式 | Description |
---|---|
启动(“http://bing.com/search", "q", "Power Apps", "count", 1 ) |
打开网页 https://bing.com/search?q=Power%20Apps&count=1。 将打开一个新窗口或标签页。 |
启动(“http://bing.com/search", { q: "Power Apps", count: 1 } ) |
与前面的示例相同,使用等效的记录表示法。 将打开一个新窗口或标签页。 |
启动(“http://bing.com/search", { q: "Power Apps", count: 1 }, LaunchTarget.Replace ) |
与前面的示例相同,如果在 Web 浏览器中运行,则将当前窗口或标签页替换为结果。 |
启动(“http://bing.com/search", { q: "Power Apps", count: 1 }, "Search Results" ) |
与前面的示例相同,创建或替换名为搜索结果的窗口或标签页的内容。 |
从画布应用到画布应用
相应地更新应用 ID、屏幕名称和记录编号。
Launch( "/providers/Microsoft.PowerApps/apps/YOUR-APP-ID",
{ Navigate: "Second Screen", Record: 34 }
)
从网页到画布应用
相应地更新应用 ID、租户 ID、屏幕名称和记录编号。
<html>
<body>
<a
href="https://apps.powerapps.com/play/e/YOUR-APP-ENVIRONMENT-ID/a/YOUR-APP-ID?tenantId=YOUR-TENANT-ID&Navigate=Second%20Screen&Record=34"
>
Launch canvas app
</a>
</body>
</html>
简单参数
上面的简单启动示例从网页或从另一个画布应用启动画布应用,显示了 Param 函数的简单示例:
公式 | 描述 | 结果 |
---|---|---|
参数(“导航”) | 应用启动并返回时,将提供 Navigate 参数。 | “第二个屏幕” |
param(“记录”) | 应用启动时,将提供 Record 参数。 即使已将其作为数字传递给 Launch 函数,Param 的结果仍将是可以隐式或显式转换为其他类型的文本字符串。 | “34” |
参数(“用户”) | 未提供 User 参数。 返回一个空白值,可以使用 IsBlank 函数进行测试。 | 空白 |
Launch 和 Param 的分步示例
以下示例使用了产品展示平板电脑布局模板。 要使用此模板创建应用,请按照创建应用文章中的步骤操作,选择产品展示模板。 您也可以使用自己的应用。
示例 - Launch
转到 Power Apps。
从左侧导航窗格中选择应用。
选择您的应用,然后选择编辑。
从菜单中选择插入,然后选择标签。
将标签移到屏幕右下角。
在右侧的属性窗格中,颜色选择白色,将边框宽度设置为 1。
从右侧选择 Text 属性,然后输入文本 Surface tablets in news。
从左上方的属性列表中,选择 OnSelect。
输入公式
Launch("https://www.bing.com/news/search","q","Microsoft Surface tablets")
。 您还可以使用您选择的任何其他 URL、参数和关键字。保存并发布应用。
播放应用。
选择标签 Surface tablets in news 启动新闻搜索关键词 Microsoft Surface tablets。
小费
为了实现可扩展性,您可以将 Launch 函数中手动输入的关键字替换为变量。
示例 - Param
转到 Power Apps。
从左侧导航窗格中选择应用。
选择您的应用,然后选择编辑。
从菜单中选择插入,然后选择标签。
将标签移到屏幕右下角。
从左上角为标签选择 Text 属性。
输入公式
Param("browser")
。 您也可以使用您选择的其他参数。保存并发布应用。
从 Power Apps 中复制您的应用的 Web 链接。
打开一个新浏览器。
将应用 Web 链接粘贴到浏览器中,并在末尾附加
&browser=Microsoft%20Edge
。应用启动时,标签会显示传递的参数值。
关闭应用播放器并编辑应用。
从左侧导航的树视图中选择应用。
选择左上方的 StartScreen 属性。
输入公式
If( Param("screen") = "techspecs", TechSpecs )
。如果 startScreen 属性中的 function 检查 parameter 是否等于某个值,在本例中为值 techspecs。 如果匹配,将把 TechSpecs 屏幕控件返回给 StartScreen 属性。
备注
如果您使用的不是产品展示应用模板,则将 If 函数中的 TechSpecs 控件名称替换为您自己的应用中的屏幕控件的名称。
保存并发布应用。
打开一个新浏览器。
将应用 Web 链接粘贴到浏览器中,并在末尾附加
&screen=techspecs
。应用将直接启动,并且将 TechSpecs 用作启动屏幕。