【发布时间】:2021-01-14 14:45:54
【问题描述】:
我们在应用程序的不同部分有“大块”相同的公式。鉴于 PA 缺乏实际的命名函数,是否有任何解决方法可以让我们重用函数/公式以防止“代码”(即公式)的重复?
【问题讨论】:
-
在使用 Canvas 应用程序进行任何级别的专业/企业规模开发方面,不要让我开始说这是一个多大的遗漏。
标签: powerapps powerapps-canvas powerapps-formula
我们在应用程序的不同部分有“大块”相同的公式。鉴于 PA 缺乏实际的命名函数,是否有任何解决方法可以让我们重用函数/公式以防止“代码”(即公式)的重复?
【问题讨论】:
标签: powerapps powerapps-canvas powerapps-formula
这刚刚宣布,它允许制造商使用组件创建用户定义的公式:https://powerapps.microsoft.com/en-us/blog/enhanced-component-properties/。
这是博客文章中的一个示例:
我们也可以在输入和输出属性中使用属性参数。一个很好的例子是数学实用程序库。我们目前不在 Power Apps 中提供 Excel 的 RandBetween 函数。但是,我们可以使用我们支持的 Rand 函数重新创建它。
让我们首先创建一个新的 MathUtils 组件,该组件具有 RandBetween 自定义属性,属性类型为 Output 和数据类型为 Number强>:
我们将为范围的该属性添加两个参数。 Excel 将这些参数命名为 Bottom 和 Top,它们的类型为 Number。这些都是 Excel 中的必需参数。
对Top做同样的事情:
在组件中,我们将根据这些参数定义计算 RandBetween 的公式:
If( Top >= Bottom, Round( Rand() * (Top - Bottom) + Bottom, 0 ), Blank() )现在我们可以在我们的应用程序中像调用函数一样调用它。我们需要在我们的应用程序中创建这个组件的一个实例,默认名称为 MathUtils_1。这里使用两个滑块控件作为输入,结果显示在标签控件中:
【讨论】:
一个选项是创建一个隐藏按钮或其他可选项目,然后将公式分配给该按钮。每当您需要重新运行公式时,请使用 Select(Button1),而不是重新创建公式。
例如,如果您需要一个添加到集合中的公式:
Collect(YourCollection,"A Value")
Select(Button1)
如果需要给这个集合设置动态值,可以先设置一个上下文变量
Collect(YourCollection,yourVariable)
UpdateContext({yourVariable,"A Value"});Select(Button1)
当然这是一个非常简单的例子,可以扩展。
当然,您也可以采用 Power Automate 路线,从您的 PowerApp 控件中调用 Flow 来完成您的工作,但如果您在 Flow 中执行复杂的工作并且必须解析返回值,则可能需要额外的许可。
希望微软最终允许我们创建可以在 PowerApps 中调用的自定义函数。
【讨论】: