iOS快捷指令+飞书+wxpusher+函数计算FC实现自动记账并自动发送报表至微信

此文档需一定基础,小白谨慎入内

一、实现iOS快捷指令+飞书记账功能

  1. B站搜索相关内容,自行搭建记账多维表格

    iOS快捷指令+飞书记账-哔哩哔哩_Bilibili

  2. 打开多维表格,从浏览器地址栏记录下app_tokentable_id

    https://bq43pb9swg0.feishu.cn/base/{your_app_token}}?table={your_table_id}&view=vewGPhFGqW

二、创建wxpusher应用来推送报表

  1. 根据WxPusher微信推送服务文档,注册创建应用

    WxPusher微信推送服务 (zjiecode.com)

  2. 获取应用的APP_TOKEN

  3. 获取接受推送的用户IDUSER_UID

三、推送报表

我推送的信息内容包括两个仪表盘(今日报表分析+每月报表分析)、一个多维表格(所有支出明细)、一个查询页面(查询支出页面),创建方式见附录部分

  1. 打开飞书开放平台,根据文档创建应用

    飞书多维表格记录查询api文档

  2. 获取应用的App IDApp Secret

  3. 根据步骤一获取的app_token和table_id修改飞书API的URL

    url = "https://open.feishu.cn/open-apis/bitable/v1/apps/*****/tables/****/records/search?page_size=20"

  4. 根据获取的数据修改以下代码

    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>&nbsp;</p>"
        message_content += "<p>&nbsp;</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)  # 允许本地测试时直接运行
    
  5. 将python代码及依赖打包成zip,打包方法参考python将依赖和源码打包在一起的方法_python项目依赖包打包-CSDN博客

  6. 创建阿里云函数计算FC

  7. 修改高级配置,请求处理程序填写{你的python文件名}.handler,时区选Asia/Shanghai,创建并选择函数角色。

  8. 修改环境变量,并创建

  9. 点击测试函数,测试无误后点击部署代码

  10. 点击配置-触发器,创建两个触发器

    ①创建一个定时触发器,在指定的时间发送推送消息

    ②创建一个http触发器(默认配置即可),在收到请求后发送推送消息

    复制HTTP触发器的公网访问地址,填写到步骤4中的python代码中(即修改列表links点击获取最新推送对应的链接)

  11. 修改完成后,再次点击测试函数,测试成功后部署代码

  12. Done。

1.支出查询页创建及分享
在这里插入图片描述
创建完成后,需允许对外查询

在这里插入图片描述

2.多维表格分享视图创建

在这里插入图片描述

3.仪表盘分享视图创建

在这里插入图片描述

如遇到困难,欢迎留个评论

  • 38
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您的问题不太清晰,我猜测您想问的是如何使用 Python 进行 iOS 自动化测试时的 OCR 文字识别和坐标定位。 OCR 文字识别可以使用 Python 的第三方库 pytesseract 来实现,它是一个基于 Google 的开源 OCR 引擎 Tesseract 的 Python 封装。您可以通过以下命令安装: ``` pip install pytesseract ``` 在使用 pytesseract 进行 OCR 识别时,您需要先对需要识别的区域进行截图,然后使用 pytesseract.image_to_string() 方法来获取识别结果。例如: ```python import pytesseract from PIL import Image # 截图 im = Image.open('screenshot.png') region = im.crop((x1, y1, x2, y2)) # OCR 识别 text = pytesseract.image_to_string(region, lang='eng') print(text) ``` 坐标定位可以通过 iOS 自动化测试框架 XCTest 来实现。您可以使用 XCTest 提供的 XCUIElementQuery 来查找您需要的 UI 元素,然后使用 XCUIElement 的坐标信息来进行操作。例如: ```python import time import unittest from appium import webdriver class iOSAutomationTest(unittest.TestCase): def setUp(self): desired_caps = { "platformName": "iOS", "platformVersion": "14.5", "deviceName": "iPhone 12", "app": "/path/to/your/app", "automationName": "XCUITest", "udid": "your-device-udid" } self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) def tearDown(self): self.driver.quit() def test_example(self): # 查找 UI 元素 button = self.driver.find_element_by_xpath("//XCUIElementTypeButton[@name='Example']") # 获取坐标信息 x = button.location['x'] y = button.location['y'] # 点击 self.driver.tap([(x, y)]) # 等待 time.sleep(2) if __name__ == '__main__': unittest.main() ``` 需要注意的是,iOS 自动化测试需要使用 Appium 作为驱动,并且需要在您的 iOS 设备上安装 Appium 的 WebDriverAgent 服务。同时,您需要在 Appium 中设置正确的 capabilities 和启动参数,才能进行 iOS 自动化测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值