PowerApps Environment Variables

PowerPlatform环境变量主要用于存储和管理全局设置、配置信息和应用程序数据。环境变量可以在解决方案(Solutions)中创建,从而在多个PowerApps、Power Automate Flow中使用,提供了一种集中化的方式来管理和配置多个应用程序的行为和属性。

应用场景

  • 全局设置: 存储全局设置,如默认语言、主题、公司标志,这样当需要修改多个应用时,只需要在环境变量中更新一次,所有应用都会自动生效
  • 配置信息: 存储应用程序的配置信息,如API密钥、数据库连接字符串、第三方服务的配置,这样集中管理配置信息,并在应用中引用,从而方便维护和更新
  • 共享数据: 使用环境变量存储共享数据,如公司的地址、员工信息、产品目录,避免重复存储和维护相同的数据
  • 应用程序数据:使用环境变量存储应用程序的数据,例如状态信息、计数器用户首选项,从而实现数据同步和一致性

优点

  • 集中化管理:集中管理全局设置、配置信息和共享数据,减少重复存储和维护数据,提高数据的一致性和可维护性
  • 动态更新:环境变量的值在运行时动态读取和写入,可以在重新发布应用程序的情况下更新应用程序的行为和属性,从而实现应用程序的灵活性和可配置性
  • 安全性:环境变量可以配置不同的方位权限,确保敏感信息的安全
  • 可扩展性:环境变量支持多种数据类型,包括文本、数字、日期、布尔等。

创建环境变量

环境变量存在于解决方案中,在使用环境变量之前,需要先创建解决方案。

  • 打开PowerApps网站
  • 点击左侧导航栏Solutions
  • 选择已经存在的解决方案,或者创建新的解决方案
  • 打开解决方案后,在Objects中点击Environment variables

objects-tab

  • 点击New->More->Environment variable
  • 创建以Text为数据类型的环境变量
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Display name:
    AppName
    Name:
    meekou_AppName
    Description:
    App Name for meekou
    Data Type:
    Text
    Default value:
    米可爱分享
    Current value:
    米可爱分享

environment-variables-new-text

  • 创建以Data source为数据类型的环境变量
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Display name:
    SharePointMeekouSource
    Name:
    meekou_SharePointMeekouSource
    Description:
    SharePoint data source for meekou
    Data Type:
    Data source
    Connector:
    SharePoint
    Connection:
    your sharepoint connection
    Parameter Type:
    Site(按需填写)
    Current site value:
    按需填写,不填写使用Default site value
    Default site value:
    按需填写
    environment-variables-new
  • 点击Save后即可
  • 点击···进行修改删除
    environment-variables-edit

在画布中使用环境变量

环境变量只适用于当前解决方案中的画布程序

  • 打开当前解决方案中的任意画布程序
  • 点击Data->Add data->SharePoint
  • Connect to a SharePoint site中->Advanced
  • 选择之前新加的环境变量SharePointMeekouSource
    sharepoint-advanced
  • 按需选择List操作

使用Text环境变量

环境变量值存储于Environment Variable DefinitionsEnvironment Variable Values

  • Environment Variable Definitions 存储配置与默认值
  • Environment Variable Values 存储修改值,如未定义Current value则不会存在记录

可以通过Lookup进行查询,如

1
2
3
//LookUp('Environment Variable Definitions','Display Name' = "AppName").'Default Value'
LookUp('Environment Variable Values','Environment Variable Definition'.'Display Name' = "AppName").Value
//LookUp('Environment Variable Values','Environment Variable Definition'.'Display Name' = "SharePointMeekouSource").Value

environment-variables-lookup

  • 动态更新环境变量的值
1
2
3
4
5
6
7
8
Patch(
'Environment Variable Values',
LookUp(
'Environment Variable Values',
'Environment Variable Definition'.'Display Name' = "AppName"
),
{Value: "米可爱分享"}
)

在Power Automate中使用环境变量

  • 在当前解决方案中创建新的流,命名为EnvironmentVariablesFlow
    objects-flow
  • 添加输入VariableName
  • Dynamic content中选择所需要的Environment variables

flow-variable

  • 通过Query Environment Variable DefinitionsDataverse.List Rows根据环境变量名查询值
    1
    2
    3
    4
    5
    6
    Table name:
    Environment Variable Definitions
    Select columns:
    schemaname,defaultvalue
    Filter rows:
    schemaname eq '@{triggerBody()['text']}'
    flow-query-environment-variable-definations
  • 通过Query Environment Variable ValuesDataverse.List Rows根据环境变量名查询值
    1
    2
    3
    4
    Table name:
    Environment Variable Values
    Filter rows
    EnvironmentVariableDefinitionId/schemaname eq '@{triggerBody()['text']}'
    flow-query-environment-variable-values
  • 通过Fetch Xml Query根据变量名查询变量值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Table Name:
    Environment Variable Values
    Fetch Xml Query:
    <fetch mapping="logical">
    <entity name="environmentvariablevalue">
    <attribute name="schemaname" alias="schemaname" />
    <attribute name="value" alias="value" />
    <link-entity name="environmentvariabledefinition" alias='environmentvariabledefinition'
    from="environmentvariabledefinitionid" to="environmentvariabledefinitionid">
    <filter type="and">
    <condition attribute="schemaname" operator="eq" value="@{triggerBody()['text']}" />
    </filter>
    <attribute name="schemaname" />
    <attribute name="defaultvalue" />
    </link-entity>
    </entity>
    </fetch>
    flow-fetchxml-query