营销型网站应必备的七大功能绿色食品网站建设论文
news/
2025/10/3 5:07:28/
文章来源:
营销型网站应必备的七大功能,绿色食品网站建设论文,秦皇岛做网站优化,wordpress 4.5 模板截止到上一篇#xff0c;终于通过飞书 API 完整获取到飞书多维表的数据。但是#xff0c;有些场景#xff0c;比如数据源会出现脏数据#xff0c;毕竟如果是运营过程多人协作维护的数据#xff0c;要想保持数据完美简直是天方夜谭#xff01;再比如我们不需要完整的数据终于通过飞书 API 完整获取到飞书多维表的数据。但是有些场景比如数据源会出现脏数据毕竟如果是运营过程多人协作维护的数据要想保持数据完美简直是天方夜谭再比如我们不需要完整的数据只需要某个类别的数据即可这个时候就需要我们对数据进行筛选处理。
本文探讨三种处理思路
思路一先读取所有数据再处理思路二调接口读取时直接处理思路三新建视图进行筛选。
思路一先读取所有数据再处理
这种思路比较简单就是在上一篇的基础上使用 Python 进行数据处理。上一篇获取到的数据都以列表feishu_datas的形式返回了采用 pandas 库来进行处理把列表 feishu_datas 转为 DataFrame 之后。对对应的列进行筛选处理即可。比如说只筛选出支付平台是“淘宝”的数据。为了便于维护和对比查看这里直接新增一个函数该函数传入两个参数一个是飞书的列表数据feishu_datas一个是需要筛选的平台名称然后在main()函数中调用它即可。
def filter_platform(feishu_datas, platform):df pd.DataFrame(feishu_datas)df_platform df[df.fields.apply(lambda x: x.get(支付平台)) platform]filter_feishu_datas df_platform.to_dict(orientrecords)return filter_feishu_datas如果是其他的筛选条件可以参考类似的方法执行筛选。
思路二调接口读取时直接处理
前面在调用飞书接口的时候都是使用默认方式读取即直接读取所有的数据未使用非必须参数。在非必须参数中有一个 filter 参数它就可以实现筛选本思路就是使用它在调接口的时候对数据进行筛选。官方文档如下
从文档中可以看到filter 参数需要给conjunction条件之间的关系和 conditions条件。 conjunction当有多个条件的时候是否同时满足所有条件值and才返回数据还是满足任一个条件值or即可。注意不支持二者嵌套使用比如 条件A and (条件B or 条件C)。conditions支持多个条件每个条件使用大括号{}包裹每个条件给定三个键值对键分别是field_name、operator 和 value值根据需求给即可。 还是拿上面的例子筛选支付平台是“淘宝”的数据。该思路只需要在get_bitable_datas()函数中将payload赋值内容改为以下代码即可。
payload json.dumps({filter:{conjunction:and,conditions:[{field_name:支付平台,operator:is,value:[淘宝]}]}})改动图示如下 该示例的代码是硬代码为了更好维护可以将变量payload的值改为参数进行传递从函数外部传递payload_data值。 补充观察每一页打印的数据可以发现接口数据也是按照所有数据进行分页然后按页筛选数据。而不是将所有符合的数据筛选完再分页返回。
思路三新建多维表视图进行筛选
该方法的原理和前面两种有点不同前面两种都是通过 API 对所有数据进行筛选。该方法是先在飞书上新建视图进行筛选数据然后通过 API 访问对应视图数据读取时仅读取筛选后的结果。还是以筛选支付平台是“淘宝”的数据。先在多维表上新建一个视图命名为“淘宝”筛选“支付平台淘宝”。 然后在非必选参数中需要指定对应的视图idview_id参数说明如下图 view_id 的值在链接上直接获取即可选择对应的视图然后复制“view”后面的字符串。 取思路二的代码将payload_data修改为下面的值即可。
payload_data {view_id:vewUjtcfIX}改完执行结果如下 小结
本文探讨了三种处理多维表筛选数据的思路
思路一获取所有数据使用 pandas 进行数据筛选思路二调查询记录接口时传递 filter 参数进行数据筛选思路三在多维表新建视图进行筛选然后指定视图读取所有数据。
附录
注使用上一篇的 while 循环代码进行修改。 思路一完整代码
import requests
import json
import pandas as pddef get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps({})headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()def filter_platform(feishu_datas, platform):df pd.DataFrame(feishu_datas)df_platform df[df.fields.apply(lambda x: x.get(支付平台)) platform]filter_feishu_datas df_platform.to_dict(orientrecords)return filter_feishu_datasdef main():app_id your_app_idapp_secret your_app_secrettenant_access_token get_tenant_access_token(app_id, app_secret)app_token your_app_tokentable_id your_table_idpage_token page_size 5has_more Truefeishu_datas []while has_more:response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:page_token response[data].get(page_token)has_more response[data].get(has_more)# print(response[data].get(items))# print(\n--------------------------------------------------------------------\n)feishu_datas.extend(response[data].get(items))else:raise Exception(response[msg])filter_feishu_datas filter_platform(feishu_datas, 淘宝)return filter_feishu_datasif __name__ __main__:feishu_datas main()print(feishu_datas)思路二完整代码
import requests
import jsondef get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20, payload_data{}):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps(payload_data)headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()def main():app_id your_app_idapp_secret your_app_secrettenant_access_token get_tenant_access_token(app_id, app_secret)app_token your_app_tokentable_id your_table_idpage_token page_size 5has_more Truefeishu_datas []payload_data {filter:{conjunction:and,conditions:[{field_name:支付平台,operator:is,value:[淘宝]}]}}while has_more:response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size, payload_data)if response[code] 0:page_token response[data].get(page_token)has_more response[data].get(has_more)# print(response[data].get(items))# print(\n--------------------------------------------------------------------\n)feishu_datas.extend(response[data].get(items))else:raise Exception(response[msg])return feishu_datasif __name__ __main__:feishu_datas main()print(feishu_datas)思路三完整代码
import requests
import jsondef get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20, payload_data{}):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps(payload_data)headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()def main():app_id your_app_idapp_secret your_app_secrettenant_access_token get_tenant_access_token(app_id, app_secret)app_token your_app_tokentable_id your_table_idpage_token page_size 5has_more Truefeishu_datas []payload_data {view_id:vewUjtcfIX}while has_more:response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size, payload_data)if response[code] 0:page_token response[data].get(page_token)has_more response[data].get(has_more)# print(response[data].get(items))# print(\n--------------------------------------------------------------------\n)feishu_datas.extend(response[data].get(items))else:raise Exception(response[msg])return feishu_datasif __name__ __main__:feishu_datas main()print(feishu_datas)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925549.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!