此文档需一定基础,小白谨慎入内
一、实现iOS快捷指令+飞书记账功能
-
B站搜索相关内容,自行搭建记账多维表格
-
打开多维表格,从浏览器地址栏记录下
app_token
和table_id
https://bq43pb9swg0.feishu.cn/base/{your_app_token}}?table={your_table_id}&view=vewGPhFGqW
二、创建wxpusher应用来推送报表
-
根据WxPusher微信推送服务文档,注册创建应用
-
获取应用的
APP_TOKEN
-
获取接受推送的用户ID
USER_UID
三、推送报表
我推送的信息内容包括两个仪表盘(今日报表分析+每月报表分析)、一个多维表格(所有支出明细)、一个查询页面(查询支出页面),创建方式见附录部分
-
打开飞书开放平台,根据文档创建应用
-
获取应用的
App ID
和App Secret
-
根据步骤一获取的app_token和table_id修改飞书API的URL
url = "https://open.feishu.cn/open-apis/bitable/v1/apps/*****/tables/****/records/search?page_size=20"
-
根据获取的数据修改以下代码
import requests import os import json from datetime import datetime # 定义常量 APP_TOKEN = os.environ.get('APP_TOKEN') USER_UID = os.environ.get('USER_UID') APP_ID = os.environ.get('APP_ID') APP_SECRET = os.environ.get('APP_SECRET') #飞书请求刷新tenant_access_token的API TOKEN_URL = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" # 第三步获取的飞书多维表格API url = "https://open.feishu.cn/open-apis/bitable/v1/apps/*****/tables/****/records/search?page_size=20" # 获取新的tenant_access_token def get_new_tenant_access_token(app_id, app_secret): payload = { "app_id": app_id, "app_secret": app_secret } response = requests.post(TOKEN_URL, headers={'Content-Type': 'application/json'}, json=payload) if response.status_code == 200: token_data = response.json() return token_data.get('tenant_access_token') return None # 获取新的tenant_access_token new_token = get_new_tenant_access_token(APP_ID, APP_SECRET) # 构建消息内容的函数 def build_message_content(records_info, links): message_content = f"<h1>今日钱花哪啦~</h1>{records_info}" for link_text,link_url in links: message_content += f"<a href='{link_url}'>{link_text}</a><br><p> </p>" message_content += "<p> </p>" return message_content # 发送消息的函数 def send_message(app_token, message_content, uids, summary, content_type, verify_pay): message_data = { "appToken": app_token, "content": message_content, "uids": uids, "summary": summary, "contentType": content_type, "verifyPay": verify_pay } headers = {'Content-Type': 'application/json'} response = requests.post('https://wxpusher.zjiecode.com/api/send/message', headers=headers, data=json.dumps(message_data)) return response.status_code == 200 # 生成多维表格api的请求体函数,依据多维表格中的字段内容自行定义 def get_records(url, headers): payload = { "automatic_fields": False, "field_names": [ "账单日", "种类", "金额", "备注" ], "filter": { "conditions": [ { "field_name": "账单日", "operator": "is", "value": [ "Today" ] } ], "conjunction": "and" } } response = requests.post(url, headers=headers, json=payload) if response.status_code == 200: return response.json() return None # 获取记录并发送消息 def main(): headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer ' + new_token} # 获取财务记录 records = get_records(url, headers) # 构建并发送消息,最新推送的链接会在后续步骤提及如何创建 if records and 'data' in records and 'items' in records['data']: links = [("点击查看今日看板", "https://bq43pb9swg0.feishu.cn/share/base/dashboard/*****"), ("点击查看本月看板", "https://bq43pb9swg0.feishu.cn/share/base/dashboard/*****"), ("点击快速查询支出", "https://bq43pb9swg0.feishu.cn/share/base/query/*****"), ("点击查看支出明细", "https://bq43pb9swg0.feishu.cn/share/base/view/*****"), ("点击获取最新推送", "https://*****-ayxesdaowt.cn-shanghai.fcapp.run")] all_records_info = build_message_content("", links) for item in records['data']['items']: record_info = f"账单日: {datetime.fromtimestamp(item['fields']['账单日'] / 1000).strftime('%Y-%m-%d %H:%M:%S')}<br>种类: {item['fields']['种类']}<br>金额: {item['fields']['金额']}元<br>备注: {item['fields'].get('备注', [])[0]['text'] if item['fields'].get('备注') else '无'}<br><br>" all_records_info += record_info if send_message(APP_TOKEN, all_records_info, [USER_UID], "今日财务报表请查收!", 2, False): print("消息发送成功") else: print("消息发送失败") def handler(event, context): main() if __name__ == "__main__": handler(None, None) # 允许本地测试时直接运行
-
将python代码及依赖打包成zip,打包方法参考python将依赖和源码打包在一起的方法_python项目依赖包打包-CSDN博客
-
创建阿里云函数计算FC
-
修改高级配置,请求处理程序填写
{你的python文件名}.handler
,时区选Asia/Shanghai
,创建并选择函数角色。 -
修改环境变量,并创建
-
点击测试函数,测试无误后点击部署代码
-
点击配置-触发器,创建两个触发器
①创建一个定时触发器,在指定的时间发送推送消息
②创建一个http触发器(默认配置即可),在收到请求后发送推送消息
复制HTTP触发器的公网访问地址,填写到步骤4中的python代码中(即修改列表
links
中点击获取最新推送
对应的链接) -
修改完成后,再次点击测试函数,测试成功后部署代码
-
Done。
附
1.支出查询页创建及分享
创建完成后,需允许对外查询
2.多维表格分享视图创建
3.仪表盘分享视图创建