如果你不是一个专职Power App的开发员,只是为了用这个工具让自己的日常工作变得更轻松, 那么你需要做的不只是会操作这个软件, 而是要以一个项目经理的思维来统筹整个搭建过程. 接下来, 跟着我一起做你的第一个Power Apps吧,
即使提需求的人就是你自己, 也是需要以App的目标用户角度解释一遍. 简单就是App要有啥功能, 用户能干啥.
本文章将以贴标签App为例, 此App主要有两个功能:
1. 用户提交任何导致效率降低,资源浪费,体验下降的流程缺陷; 相应需录入数据: 标签标题, 问题描述, 低效环节,
2. 对应的流程负责人可以进入到app里, 找到他所负责流程下的问题, 并填写解决方案, 关闭该标签. 相应需录入数据: 解决方案, 状态
既然用户有2类, 一个是标签提交者, 一个是标签解决者, 那App的第一页就得区分这两类人群, 如果这2类人群是不同的, 那完全可以通过用户ID来判断, 但如果是会重合, 那就需要在App的第一页让用户自己选择自己的角色.
Home Page: 2个按钮, “提交一个标签” (链接到Page 1) 和 “解决我负责的标签”(链接到Page 2)
Page 1: 输入框: 标签标题, 问题描述, 低效环节; 隐含数据(可通过app获得): 提交日期, 提交者姓名 + 提交按钮
Page 2: 可查看该登录用户下的所有标签 (此列中根据流程指定负责人)的详细内容; 输入框: 解决方案, 状态 + 提交按钮
类似于Power BI, 我们也要注意区分数据表和维度表, 这样在数据源较多时, 理清其中的关系:
数据表, 即用于记录App录入数据的数据库, 唯一的ID是很重要的, 这个也是Power App读取调用每一行数据的唯一数据. 在这个案例里, 就是每一条用户提交的标签.
维度表, 即用于记录一些描述性的, 分类属性的数据, 在这个案例里, 就是流程名称, 可以用于下拉菜单, 避免用于自己填入.
确定好要用哪些数据, 就可以先创建好, 这里推荐2个常用也是普通office365用户可以免费使用的数据源: Excel Table (注意: 必须是Excel里的Table) 和SharePoint List
另外需要注意的一点是, 这个数据源对应的用户权限要和你的app一致, 也就是要覆盖你的所有目标用户, 否则他们即使可以登录app, 也不能提交数据, 因为他们对数据源没有写入权限.
前面做了很多准备工作, 现在正式进入App的设计制作中. (提前申明一点, 因为我在学习时, 用的linkedIn的培训视频, 都是英文的, 所以我用的也是英文版本的Power Apps,而且在后期实践中,我发现因为需要有些低代码编辑的内容, 里面所有页面,控件的命名也推荐使用英文, 毕竟公式固定词是英文, 如在写公式来回切换中英文会不方便, 也容易弄混全角半角字符, 到时公式报错 )
1.登录Power Apps网页https://make.powerapps.com/, 点左侧边导航栏的”Create”创建按钮, 选择creat from blank(Canvas App), 选Responsive, 因为这个选项是在电脑/手机/平板都能自动适应屏幕的, 非常方便, 避免后期针对不同的用户端二次开发.
然后我们就进入Power App Studio啦, 加载时会有点慢. 进来后可以看到Tree View下面有默认的一些页面, 但是我一般会删掉, 新建一些空白页面, 更灵活简单.
右侧属性栏可以改按钮显示文字, 可以改尺寸, 改字体字号.当然, 像在PPT里拖拽控件改大小, 双击改文字也是可以的, 很大程度上, 你在编辑App里的控件的视觉属性时, 完全可以参考PPT里的操作.
这个页面就相当于一个Home页面, 主要作用就是导航用户进入到对应的页面, 所以这里将引入一个重要公式Navigate()
当你选中一个控件时, 上面属性栏会出现这个控件最常用的一个APP属性, 比如按钮的作用就是当你点击它时, 它会有一系列的反应, 所以这里就叫做 OnSelect, 默认的属性是false, 那就是你按一下, 它啥也不发生,因为你没有给它赋值.
当然,如果你点选这个下拉按钮, 还有其他很多属性可以选择并编辑, 其中也包含视觉属性, 但这里显示都是以公式的方式出现, 所以不如在右侧边属性面板编辑来的直观.
所以, 接下来我们要给这两个按钮赋值, 那就需要提前做好另外2个页面, 因为我们要的就是点击按钮, 跳转页面. 于是我又新建了2个页面, “Submit”和”Close”.
然后回到Home页面, 分别选中2个按钮, 输入如下公式
OnSelect = Navigate(SubmitTag)
OnSelect = Navigate(CloseTag)
注意, Power Apps里会自动识别公式里的固定词, 并按不同颜色显示, 如蓝色是公式关键词, 紫色斜体字是用户自定义的页面/控件等, 只有当颜色区分显示时, 说明你的公式输入是正确的, Power Apps能识别到.
接下来就是到SubmitTag页面, 这个页面主要要引入2个控件, Text lable, Text input, 顾名思义, Text label就是显示文字的, Text input就是让客户
好的, 认识这2个控件后, 咱们就像做PPT一样把页面做出来. 关于”文字输入”控件, 有一个很重要的属性就是它的Mode, 是单行文字,还是多行文字, 或是密码. 这个控件本身没有内置字符上线, 能存储多少字符最终是要跟存储该字段的数据库属性匹配的. 所以你需要根据数据库的存储容量来设置该控件的MaxLength属性(就在Mode上面), 避免用户输入超长文本但是无法提交至数据库, 最终导致提交失败.
这里我们选用SharePoint作为数据源 (别问为什么, 问就是没有Premium account, 无法使用dataverse) , 所以我们把”标签标题”对应的文字输入保持”单行文本”, 但是在MaxLenth处输入255, 这样用户输入到255字符后, 就无法再继续输入了, 算是一个防呆举措. 也可以根据实际需要填写, 小于255就行.
“问题描述”可以改成multi line, 避免用户写入冗余内容, 也可以设置一个上限, 比如500.
Drop down有一个很重要的属性—- Items, 这个决定了下拉菜单里有啥内容, 如果下拉菜单内容简单且长期固定, 那就可以直接写入公式里, 它的公式是这样的, 最外中括号, 里面双引号,分隔用逗号.
Item = ["Value1","Value2","Value3"]
点击右上角的预览按钮后,
就是这样的:
接下来要考虑的是如何将这里的低效环节跟它对应的负责人联系起来, 而且这个负责人的名字是需要最终写入数据库的, 否则负责人的页面无法根据他的名字筛选. 这里假定每一个环节对应一个负责人, 用户选中低效环节后, 负责人自动显示. 所以这里我们需要插入一个Text label控件, Text就用公式来匹配.
这里就需要用到前面准备好的一个表格, 低效环节-负责人表格, 以下是导入excel table的步骤
点了这个Excel Online按钮后, 页面右侧会出现 choose a dataset, 然后蹦出你所用账号能登录的sharepoint site或是group, 或是你自己的OneDrive, 选择对应的folder, 找到你存放的excel table文件, 就能找到对应的Excel table. 每一步都有提示, 按照点就行.
这里我用的是OneDrive, 选中这个Responsible, 最后会提示需要自动生成个uniqe ID, 这个就是前文说的, 数据源里的ID对Apps很重要.
然后在你的左侧边面板就可以看到一个已经连接好的数据源, 是用你自己的office365账号链接的.
考虑到一个环节可能有多个负责人, 所以负责人对应的值也用下拉菜单, 这样可供用于选择.
这里Item里对应的公式就不能硬写入了, 需要与上面的低效环节相关联, 要用公式是Filter
Items=Filter(Responsible,LossArea=Dropdown1.Selected.Value)
但是写入公式后, 这里没有显示负责人名字, 而是显示低效环节名字. 这就需要进一步去改右侧属性栏里的Value的值, 这个值默认会选第一列的表头名称,需选下拉菜单, 改成需要的列名,这样显示就正确啦.
截至目前, 所有需要用户录入的信息的有了, 现在需要做的是保存该条记录到数据库, 所以,我们做一个”提交”的按钮, 用Patch函数来保存该记录.
在提交之前,我们需要连接数据表, 因为有数据表, 才能存储数据. 这里用的是Sharepoint List, 只需提前把列名加好, 为使PowerApps更方便的引用SharePoint List的表头, 建议表头用英文名且不要有任何空格.
如下Sharepoint List, Title是系统默认, 可以忽略, 其他列为我手动加入, 除了Submission_Date是日期格式, Tag_discription是多行文本格式, 其他都是单行文本格式.
按下图步骤加载该数据源, 方法和加载Excel Table差不多
好, 接下来,咱们就来写Patch函数,这个是本范例中最复杂的一个函数, 明白了这个, 你都通了.
为方便书写公式, 我把该页面中需要写入到数据库里的控件名字都改了下, 更便于书写公式
Patch(TagAppDatabase,// 数据源名称Defaults(TagAppDatabase),// 表示新增记录(固定写法){ Tag_Title: TextInput_Title.Text,// 给数据库里的Tag_Title列赋值,分隔符为冒号,冒号左边是SharePointList数据源的列名,右边是App里控件的值;该句结束用逗号 Tag_Description: TextInput_Description.Text,// Tag_Description字段赋值, 读取控件值的方是是: 控件名.属性 Loss_Area:Dropdown_LossArea.Selected.Value,//此下拉菜单里是单列数值,没有表头,所以用Selected.Value Responsible: Dropdown_Responsible.Selected.Responsible,// 此下拉菜单里是引用的是table,所以用的Selected.表头名 Submission_Date:Now(),//用系统当前时间赋值 Submit_by: Office365Users.MyProfile().DisplayName// 登录用户名 })
这里需要提前加入一个Office 365 Users的数据源, 这样就可以读取你所在的Office 365 group的用户信息, 在填入Submit_by数据是很有用.
好的, 把Patch函数写好了,我们就可以测试一下了.先录入数据
然后点”提交”按钮后, 去刷新SharePoint list, 就有一条新的记录生成了.
恭喜你, 到这里, 你已经完全了一个Power Apps的主提部分. 下一篇, 将继续介绍作为标签负责人,如何去检索到这条记录并修改这条记录. 明天见!