Power BI调用飞书API,抓取多维表格中的数据

第一步:收集相关参数

首先,我们打开飞书开放平台开发文档,链接地址是 https://open.feishu.cn/document/server-docs/docs/bitable-v1/notification

我们清楚我们的目的是读取数据而已,所以我们直奔主题。

获得API的链接及另外2个参数

阅读本页的文档可知,我们要获取多维表格的数据,是需要通过访问这个链接:
image.png

https://open.feishu.cn/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/:record_id

而这里面的:app_token:table_id 需要换成我们自己的内容。
这两个内容的获取方法如下图:
image.png

image.png

寻找获得token所需要参数

阅读第3部分可知,除了以上参数外,我们还需一个user_access_token或者tenant_access_token
image.png

token就是访问凭证,上图给我们提供了两个链接获取用户身份访问凭证获取应用身份访问凭证

我们先点开获取用户身份访问凭证看看。
image.png
好吧,这些内容我也看不懂,好在我看到了个获取访问凭证,那就点开来看一看吧。

嗯,它的第3部分讲得还是很明白的。我们就参着它说的试试吧。也就是登录创建获取

于是,我们先点击进入开发者后台
image.png

照着文档所教的,点创建企业自建应用,创建一个自己的应用。
image.png

点击这个应用,进入这个应用设置中心。在凭证与基础信息中获得我们要的
image.png

比如,笔者的这个App ID是“***************************”,App Secret是“***************************”

找到使用App ID和App Secret获取token的方法

接下来,我们就是要用App ID和App Secret去获取我们的tenant_access_token

鉴权管理下我们可以找到获取tenant_access_token的方法,如下图所示
image.png
阅读文档可知,我们要使用POST方法向https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal这个链接发一个请求。

headers为:

headers={"Content-Type":"application/json; charset=utf-8"
}

param为:

params={"app_id":"你的App ID","app_secret":"你们的App Sceret"
}

使用python编写爬虫

使用python获取token

至此,我们所需要参数都已集齐了。然而,我们不会写python爬虫,更不会使用M函数实现爬虫怎么办?

那就请教chatGPT吧!
image.png

给它发一个问题,它的回答如下图:

image.png

这是它给的代码

import requests# 请求头信息
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36","Accept-Language": "en-US,en;q=0.9",
}# 请求参数
params = {"key1": "value1","key2": "value2"
}# 发送GET请求并获取响应
response = requests.get("https://example.com", headers=headers, params=params)# 打印响应内容
print(response.text)

我们更换一下url、headers和params。

import requests
import jsonheaders={"Content-Type":"application/json; charset=utf-8"
}
params={"app_id":"**************","app_secret":"**********************"
}
response = requests.post("https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal", headers=headers, params=params)
token=json.loads(response.text)['tenant_access_token']
print(token)

打开vs code尝试运行一下,没有问题,能正确获得token。
image.png

使用python获取表格中的数据

依样画葫芦,我们再增加一些代码,使它在获取到token之后,使用该token,去获取表格数据。

import requests
import jsonheaders={"Content-Type":"application/json; charset=utf-8"
}
params={"app_id":"************************","app_secret":"**********************"
}
response = requests.post("https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal", headers=headers, params=params)
token=json.loads(response.text)['tenant_access_token']app_token="**************************"
table_id="************************"
url=f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records"
headers={"Authorization":"Bearer "+token
}
res = requests.get(url, headers=headers)
print(res.text)

运行它之后,得到这样一个错误提示:
image.png

不知道它是什么意思。没关系,我们问chatGPT。
image.png
很清楚了,我们需要bitable:app:readonlybitable:app的权限。

设置一下个人应用的权限

回到我们的应用中心,就是前面获得App ID和App Secret的地方。到权限管理菜单里申请一下权限,并创建版本。
image.png

再进我们的飞书管理台后(https://r0kc290lpx2.feishu.cn/admin/) 审核一下。记得点完审核,还要再点一下通过
image.png

再运行一下我们的python脚本,已经可以正确得获取到一串json文本了。
image.png

使用将python爬虫转化为Power Query中的M语言

到现在为止,我们已经可以用python来获取飞书的数据了。可是,我们在Power BI中用M语言更便利,怎么把它转成M语言呢?还是问我们的chatGPT吧。
直接问它提问。
image.png

它给我们如下回答:

let// 定义请求头headers = [#"Content-Type"="application/json; charset=utf-8"],// 定义请求参数params = [app_id = "************************",app_secret = "******************************"],// 发送POST请求获取访问令牌tokenResponse = Json.Document(Web.Contents("https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal", [Headers=headers, Query=params])),token = tokenResponse[tenant_access_token],// 定义API请求URL和参数app_token = "********************",table_id = "********************",url = "https://open.feishu.cn/open-apis/bitable/v1/apps/" & app_token & "/tables/" & table_id & "/records",// 发送GET请求获取数据response = Json.Document(Web.Contents(url, [Headers=[Authorization="Bearer " & token]])),data = response[records]
indata

把它贴进Power BI中试一下,发现报错了。
image.png

从上往下一步步检查,发现第三步,发get请求获取token那一步报错了。是请求体写错了,我们自己改一下就好了。
Query=params,改成Content=Json.FromValue(params)就OK了。再把最后一步删除,我们就可以看到,PQ可以正确得抓取到Json数据了。
image.png

最后的将Json转化为表格的步骤,不再赘述。感兴趣的小伙伴直接下载附件文件来看吧。

注意事项:

使用以上方法,一次只能获取最前面的500行记录。如果你的数据大于500行的话,需要使用到前一次访问获得page_token参数,在下一次访问时填入,以获得接下去的500行数据。此访问,每秒钟最多20次,也就是1万行记录。具体做法,下回分解。
image.png

附件下载

链接:百度网盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27449.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT万物皆可接,你体会到了么?

引言: 当前AI技术的快速发展,已经在许多领域中得到了广泛的应用。如果你还没有玩过或者动手玩过的,我建议你还是自己搞一搞比较好,腾讯云的服务器也不贵,每月几十块钱,如果没有技术能力,或者对…

程序员的悲哀是什么?

推荐阅读:阿里领导猝死,留下孤儿寡母 知乎上有个热门讨论帖:程序员的悲哀是什么? 本文整理了一些网友回答。 网友:zhang文1 996嫌累,摸鱼觉得没意思,使用开源库觉得没技术含量,自己造…

VM虚拟机中如何设置ip地址

当我们在windows环境下,在cmd命令行中输入ipconfig可以看到我们的主机ip地址,但是我们创建了一台虚拟机,并且装好系统时,输入ifconfig(这里和windows下命令不一样,不要搞混了)时,会发现得不到ip地址&#x…

在centos虚拟机中修改IP地址

文章目录 修改centos虚拟机IP地址1.确定静态IP地址2.修改网卡配置3.重启网络服务4.重启虚拟机5.查看修改后的IP 修改centos虚拟机IP地址 1.确定静态IP地址 2.修改网卡配置 输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet PROXY_METHODnon…

修改虚拟机的IP地址(一看就懂)

修改虚拟机IP地址 修改文件内容查询查询网关和子网掩码DNSMAC地址 修改文件内容 相信用过VM克隆虚拟机的小伙伴们都知道,克隆虚拟机是会把IP地址等都会直接复制过来。 如果先打开克隆的虚拟机,就会把原来虚拟机的IP地址给“抢”过来,那么原来…

VirtualBox 中给虚拟机设置IP

在虚拟机关闭的状态下,在 VirtualBox 中选择 主机->设置->网络->网卡2,勾选 启用网络连接,选择 仅主机(host-only)网络。 启动虚拟机,在虚拟机中打开terminal(快捷键CtrlT)…

【使用心得】ChatGPT变成我的私人厨师

使用ChatGPT之后,我的生活变得更加丰富了。它以一个私人厨师的身份,为我提供各种健康美味的菜谱,以及干货知识、烹饪技巧等等,让我能够轻松地做出口感和营养都兼备的佳肴。 与此同时,Chat GPT也会根据我的口味喜好、食…

王慧文的光年之外离OpenAI还有多远?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 ChatGPT的火爆让AIGC站上了风口,行业迎来重大变局。 AIGC热潮席卷之下,大厂人纷纷投身AI大模型创业大军,大模型创业“百团大战”已打响。前有美团联合创始人王慧文官宣创业—— “光年之外…

11个AI写作软件工具!知名4A广告公司蓝标宣布停止文案外包!

AI的这场熊熊大火,终于还是烧到了广告界! 2023年4月12日,是一个再普通不过的日子,但这一天会被很多人记住。不是因为席卷整个华北区的漫天黄沙,而是因为一封代表着AI势不可挡的决心和象征着一个行业巨变拉开序幕的邮件…

大模型席卷应用,三分之二工作岗位将受影响,开发者如何应对?

据近期高盛发布的研究报告显示,以ChatGPT为代表的生成式AI将对美国和欧洲三分之二的工作岗位(约三亿个)造成影响。超级智能已将触角探向原本只能由人类来主导完成的产品生产,从生产资料转变为生产力。 而在成为生产力的同时&#…

奇舞周刊第496期:ChatGPT 的工作原理,这篇文章说清楚了!

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ ChatGPT 的工作原理,这篇文章说清楚了! ChatGPT 能够自动生成一些读起来表面上甚至像人写的文字的东西,这非常了不起,而且出乎意料。…

ChatGPT+一帧秒创,AI全自动内容生产就在不远处?

9月初开始盛行的AI作画风头还未过去,11月30日,open AI面向全球发布了AI智能聊天工具ChatGPT,上线仅仅一周时间,用户数突破百万,过去两周更是席卷整个科技互联网领域。 ChatGPT是什么? 本次OpenAI推出的Cha…

chatgpt赋能python:用Python轻松拿高分:期末成绩分析

用Python轻松拿高分:期末成绩分析 在当前的IT时代,Python已经成为最受欢迎的编程语言之一。 从web开发到数据分析,从机器学习到人工智能,都可以应用到Python编程语言。而对于大多数学生来说,Python是计算机编程的必修…

多云战事

22 年前的 2001 年,年轻的理工男冯勇决定加入 F5。 F5 中国构架师部门技术总监 冯勇 成立于 1996 的 F5,是一家专注于应用交付的技术型公司,总部在美国华盛顿州西雅图,并于 2000 年进入中国。新世纪初互联网的快速发展为 F5 带来了…

AI创作与游戏开发(二)工具方法概述

大家好,Generative AI Model的出现,给游戏开发带来一些新的变革.比如像stable dissfusion可以快速的生成图像,设计人物的原型,背景设定.像DreamFusion和这个Magic3D这种模型,它可以通过文本快速的建模3D对象.还有像chatgpt这种可以编写故事啊可以做模拟人物对话.AItts可以进行语…

C++ 命令模式

什么是命令模式? 将请求转换为一个包含与请求相关的所有信息的独立对象。从而使你可以用不同的请求方法进行参数化,并且能够对请求进行排队、记录请求日志以及撤销请求操作。命令模式属于行为设计模式 如何理解命令模式 命令模式很像我们订外卖&#…

如何设计一份问卷?

问卷是一种非常好的数据收集方式,问卷有着小巧灵活轻便的天生优越性,简单方便,任何人都能设计一份问卷数据,然后进行数据分析和研究。但可曾知,糟糕的问卷设计会带来糟糕的数据分析,无法得到预期结果&#…

如何设计调查问卷?

想要做好一份调查问卷要明确哪几点? 一、问卷三要素 1、问卷主题 我们使用调查问卷法进行调查的时候,首先要明确主题是什么,是关于人员满意度调查、人员喜好类型调查还是其他主题。明确主题后我们才可以进行接下来的动作。 2、调查人群 …

调查问卷分析

调查问卷数据及分析: 1. 在统计数据中大一和大二的学生占大多数 2. 由此可以看出大部分只是偶尔看看,还有许多从没有浏览过,针对没有浏览过的人我们设计了下面的问题: 3. 可以看到,在没有使用过bbs的人中其实有很多…

问卷调查页面的设计与实现

问卷调查页面的设计与实现 功能要求: 1.用户可以根据调查问题进行单选、多选以及在结尾处填写姓名、职位和联系电话等信息。 2. 每个输入栏目的文本框均需要显示提示信息。 3. 用户在点击按钮提交注册信息时可以验证所有栏目均为必填项以及电子邮箱的有效性。 实现…