腾讯、飞书等在线表格自动化编辑--python

编辑在线表格

    • 一 目的
    • 二 实现效果
    • 三 实现过程简介
      • 1、本地操作表格之后进入导入在线文档
      • 2、直接操作在线文档
    • 四 实现步骤讲解
      • 1、实现方法的选择
      • 2、导入类库
      • 3、设置浏览器代理直接操作已打开浏览器
      • 4、在线文档登录
      • 5、在线文档表格数据操作
      • 6、行数不够自动添加行数
    • 五 代码实现
    • 小结

一 目的

我们在工作中时长会用到一些在线表格实现多人协作,但是有事会遇到一些例如数据的录入等人工操作过于麻烦,或者需要周期性的操作,我们希望使用自动化的方式在指定的数据源获取数据然后按照指定的要求填入在线表格

二 实现效果

【GIF】

三 实现过程简介

有两种实现方式:

1、本地操作表格之后进入导入在线文档

本地实现表格的操作就不多说,有多种方式来实现,无非是导入在线表格,这里我们也是需要提前登录才行,一般的上传导入重名也不会出现覆盖的情况所以我们相当于生成一个新的表格,
在操作之前我们可以下载旧的表格数据,再次基础上进行操作
然后再上传导入,导入之前记得删除原表格

2、直接操作在线文档

实现在线文档的编辑三步走:
1、设置浏览器和代理调用UI自动化操作的时候直接操作已打开的浏览器
2、登录在线文档:在打开的浏览器打开并登录在线文档--此文直接进入需要操作的文档
3、通过键盘操作来实现文档内容的增删改查【登录用户要具备相应的权限】

本文只要讲解第二种方式。

四 实现步骤讲解

1、实现方法的选择

在接到需求的时候首先想到的就是接口的方式,没办法谁让它最为习惯也最为稳定呢,但是在调研过程中发现两个比价难以突破的问题:
1、接口请求时需要使用cookie,存在多个cookie而且有时效性,无法实现保持可用cookie
2、在线表格内容发生变更接口保存数据后分析难度比较高
最终放弃此方式,因为本身对自动化有所研究就考虑使用UI自动化的方式来实现,有存在新的问题
1、登录:UI自动化打开新网页需要登录【已解决】
2、表格内容属于画布里面,只能定位到画布,画布内部无法精确定位到每个表格【已解决】

2、导入类库

from selenium import webdriver #调用webdriver
from selenium.webdriver.chrome.options import Options #设置浏览器初始化内容
from selenium.webdriver.common.by import By #定位元素
from selenium.webdriver.common.keys import Keys #键盘操作

3、设置浏览器代理直接操作已打开浏览器

保持登录–取巧:发现在线文档只要登录之后不主动退出/长时间不操作则都可以一直保持登录,那我们就可以直接操作已经登录的在线文档不就好啦,但是用过selenium的都知道,调用webdriver默认会打开一个纯净的浏览器,后来想到一个就是我不打开新的浏览器,直接操作已经打开的浏览器是不是就能实现。
下面是实现过程:
(1)打开浏览器设置端口调试代理和数据存储:

# 进入浏览器的安装目录中【可以在任务管理器跳转过去】打开CMD窗口执行下面命令既可【注意端口号和用户数据存储位置是可以改的】
chrome.exe --remote-debugging-port=9222 --user-data-dir="G:\test"
#9222 是端口号,最好不要和本机其他端口号冲突,G:\test打开的浏览器用户数据存储,这里设置一个存在的目录既可
#回车之后会打开一个空白的浏览器,在这个浏览器上登录就行,

(2)webdriver的初始化中写入调试的数据就可以操作打开的浏览器,而不是重新打开新的

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

此时再执行脚本就是操作我们上面打开的浏览器,不是冲洗打开空白浏览器啦

4、在线文档登录

没啥可多说的,上一步打开的浏览器扫码之类的登录就行

5、在线文档表格数据操作

本来想着修改哪一行数据直接定位哪一行双击修改既可,但是出现了一个小意外:表格是在一个画布上,想定位画布上的表格发现不能进行下一步的定位啦,这让我毫升的郁闷呢
在这里插入图片描述
最终查阅了一些资料找寻到了两种可行的办法
(1)坐标定位
我们可以定位到画布,画布是有坐标的,我们可以通过不断变更坐标的位置来实现表格定位,
但是有一个弊端,如果表格大小发生变更了,那之前的坐标都需要调整,而且还要手动去滑动表格

ele = 画布定位
ActionChains(driver).move_to_element_with_offset(ele,X,Y).send_keys('输入内容')

最终此种方法不好用被舍弃
(2)通过键盘的操作
发现我们可以通过剪片的HOME键、TAB键、ENTER键,以及上下键实现表格定位
在表格的最上方输入框是在画布之外的可以进行增删改查等操作
在这里插入图片描述

driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.HOME)
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.CONTROL, Keys.UP)
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.ENTER)
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.TAB)

然后我们根据获取到的数据来进行判断、修改、删除等操作,也可以进行追加写入,一般是按行写入

# 这是每行需要写入的数据,当前就设置了一行,如果更多的话使用列表就行
list = [1,2,3,54]
# 获取第一列数据
driver.find_element(By.XPATH,'//*[@id="alloy-simple-text-editor"]').click()
txt = driver.find_element(By.XPATH,'//*[@id="alloy-simple-text-editor"]/p').text
# 判断为空输入数据,否则进入下一行,追加的方式添加数据
if txt =='':for i in range(len(list)):driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]/p').send_keys(list[i])driver.find_element(By.XPATH,'//*[@id="alloy-simple-text-editor"]').send_keys(Keys.TAB)#进入下一个单元格
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.ENTER)  # 进入下一个行

6、行数不够自动添加行数

我们都知道插入数据的时候在线表格一般只加载200行,需要更多就自己添加,这里我们就可以使用最下方的添加按钮添加行,当然我们要检测出现添加按钮–也就是到最后一行之后才点击添加

    # 行数不够添加行数try:driver.find_element(By.XPATH, '//*[text()="添加"]').click()except:print('不需要扩展列表')

五 代码实现

完整代码

# -*- coding: utf-8 -*-
'''
@Time    : 2023/7/12 15:39
@File    : 在线文档写入数据.py
''''''
实现在线文档的编辑三步走:
1、设置浏览器和代理调用UI自动化操作的时候直接操作已打开的浏览器
2、登录在线文档:在打开的浏览器打开并登录在线文档--此文直接进入需要操作的文档
3、通过键盘操作来实现文档内容的增删改查【登录用户要具备相应的权限】
'''
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys# 文件存储位置打开浏览器
# chrome.exe --remote-debugging-port=9222 --user-data-dir="G:\test"chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://docs.qq.com/sheet/DTEtLSW5NWldEcWJE?tab=gqke19')
print(driver.title)j = 0 #使用变量来定位列表# 移动焦点到第一行第一列
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.HOME)
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.CONTROL, Keys.UP)
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.ENTER)
driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.TAB)
# 这是每行需要写入的数据,当前就设置了一行,如果更多的话使用列表就行
list = [1,2,3,54]for i in range(300):#循环行,这里是操作最大行数driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.HOME) #先跳到当前行的第一列driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').click()s = driver.find_element(By.XPATH,'//*[@class="bar-label"]').text #获取此行的行数a = int(s[1:])-1 #将A**去除A,留下数字,如果你的排序为行的相差则减去几即可print(a)# 获取第一列数据driver.find_element(By.XPATH,'//*[@id="alloy-simple-text-editor"]').click()txt = driver.find_element(By.XPATH,'//*[@id="alloy-simple-text-editor"]/p').text# 判断为空输入数据,否则进入下一行,追加的方式添加数据if txt =='':for i in range(len(list)):driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]/p').send_keys(list[i])driver.find_element(By.XPATH,'//*[@id="alloy-simple-text-editor"]').send_keys(Keys.TAB)#进入下一个单元格driver.find_element(By.XPATH, '//*[@id="alloy-simple-text-editor"]').send_keys(Keys.ENTER)  # 进入下一个行# 行数不够添加行数try:driver.find_element(By.XPATH, '//*[text()="添加"]').click()except:print('不需要扩展列表')

小结

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

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

相关文章

自动化电子表格处理

使用java来操作excel需要用到一个开源工具,Apache下的poi相关jar包。让我们可以很轻松的方便的操作excel文件。 首先,到官网把poi下载下来。官网地址 下载完成后,进行解压。把所有jar包导入到项目工程当中。 上面准备工作完成&#x…

提升10倍写作效率,这5个写作工具,文笔不好的人别错过

记得刚出来上班的时候,我的写作效率很低,经常没有思路,也找不到选题。甚至一两个小时过去了,仍然不知道如何动笔,经常写了删,删了又写。工欲善其事,必先利其器。在写作过程中,需要一…

黑马学生入职B站1年,晒出21K月薪:我想跳槽华为

前两天,黑马发布了《2022年度互联网平均薪资出炉!高到离谱!》,信息传输、软件和信息技术服务业薪资遥遥领先!Z时代举头望着天花板,故作潇洒:钱真的不重要。低头却想着搞钱大计:拖后腿…

黑马学生入职B站1年,晒出21K月薪:我想跳槽华为!

哈喽大家好,人见人爱,花见花开的播妞又来了!!! 现在的Z时代,嘴上说着不要,身体却很诚实。 前两天,黑马发布了《2022年度互联网平均薪资出炉!高到离谱!》&…

会玩!女网红化身AI,同时交往1000个男友,或年入4亿!

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年3月份热门报告合集 无需翻墙,ChatGPT直接使用 万字干货:ChatGPT的工作原理 2023年创业(有创业想法)必读手册 ChatGPT等…

chatgpt赋能python:python跨平台运行:让你的代码无限制

python跨平台运行:让你的代码无限制 Python语言一直以来都是一门跨平台的编程语言,这是开发者选择Python的一个很重要的原因。Python 正在迅速发展,而它作为一门跨平台的语言,最大程度减少了开发的难度和过程中的痛苦&#xff0c…

31w赛题奖金!当 AI for Science 撞上“先导杯”,会擦出什么样的火花?

进入 2022 年,AI for Science一连进入数个科技看点榜单。从《科学》、《自然》等顶尖学术杂志的年度技术突破,到百度、智源社区等发布的2022 科技趋势展望,AI for Science 正以席卷产学研各界之姿,进入人们的视野。 AI for Scienc…

人工智能机器深度学习与大数据技术在足球比赛预测推荐分析上的深度挖掘和应用

人工智能机器深度学习与大数据技术在足球比赛预测推荐分析上的深度挖掘和应用 足球作为世界第一大运动,也是最具影响力的体育项目。世界杯、欧洲杯,包括每年的五大联赛,成千上万的人成为它们的追逐者,因为热爱所以着迷。2009年&a…

赛果公示 | 2022金砖大赛之区块链应用开发与测试赛项(国内赛)

日前,2022一带一路暨金砖国家技能发展与技术创新大赛(以下简称金砖大赛)区块链应用开发与测试赛项在长沙民政职业技术学院圆满落幕。该赛项赛题围绕区块链技术在产业应用中的典型工作岗位技能而设计,重点考察参赛选手基于区块链底…

python爬虫之使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率

目录 前言分析思路数据储存代码结果展示结语 前言 竞彩足球是目前比较受欢迎的一种体彩彩种,玩法较为灵活多样,赔率可观,今天就来记录一下如何抓取竞彩足球的开奖信息和赔率。 分析思路 我使用的网站为500彩票,我们以2021年6月…

世界杯太精彩了,带大家用Python做个足球游戏,边玩游戏边看比赛

文章目录 Python零基础快速制作足球游戏(附源代码) 前言 一、Python环境说明 二、游戏程序说明 1、游戏开始界面 2、人物移动规则说明,可支持两位玩家 3、足球规则 4、主方法调取 三、游戏运行效果与比赛结果 1、游戏开始界面 2、…

大数据平台 异“彩”纷呈你的每次“球”赛预测

关于彩球 北京彩球世纪科技有限公司(以下简称“彩球”)是一家专注于移动互联网体育比赛数据分析和服务的创新型科技公司。旗下产品“彩球”是一款通过大数据分析来为广大体育爱好者提供赛果预测参考的APP,目前提供足球、篮球比赛的分析。彩球…

FinTechthon赛果公布| 这些区块链脑洞如何实现?

通过“时间银行”的区块链公益平台,将志愿服务时间存证上链,牵引多方协作以构建公益体系;将区块链和硬件相结合,打造智能共享快递联盟;把婚姻登记搬到区块链上,将婚姻记录永久上链…… 10月29日&#xff0c…

足球大数据预测胜平负、走地之人工智能算法现状与改进措施

感谢华为云开发联盟收录我的两篇文章,有动力续写足球预测相关话题了。:) 续谈大数据之足球盘口赔率水位分析思路及其实现利器_sundayhost的博客-CSDN博客_足球大数据分析这套查询和验证报表的意义在于:一是,很多人长期…

腾讯控股2020年第一季度财报表现亮眼超预期

江北消息:2020年5月13日港股盘后腾讯发布2020年第一季度业绩报告. 数据显示: 2020财报超预期 第一季度收入1080.65亿元,去年同期854.65亿元,同比增26%。 第一季度净利润288.96亿元,去年同期272.1亿元,同比增6%。 第一…

价格便宜一半 这款智能座舱芯片实际性能却超越高通8155?

全球汽车产业正在经历颠覆式的变革转型,智能座舱作为汽车迈向智能化和网联化路径的关键人机接口,未来将成为满足用户个性化需求和高级驾乘体验的智能移动空间。 在这一过程中,随着智能座舱功能的不断增多,汽车产业对于先进制程、…

天宇优配|越南股指突然重挫超3%A股供销社概念再大涨

经过30多年开展,国家级高新区在创新产出方面,正逐步成为全国专利产出最丰盛的区域。 科技部印发《“十四五”国家高新技术工业开发区开展规划》 11月9日晚间,科技部印发了《“十四五”国家高新技术工业开发区开展规划》(下简称《…

中兴通讯年报或亏损29亿 (zz)

继2012年前三季度巨亏之后,四季度业绩依然表现不佳,亏损加剧。该公司今日发布的数据显示, 2012年全年预计最高亏损额将达到29亿元,同比大幅下降。不过,该公司表示,今年一季度有望实现盈利。上周五该公司报…

扬帆优配|半天翻倍,“蹭热点”翻车,前期“牛股”已近腰斩

周五上午,A股商场整体走低,多数职业板块和个股跌落,军工和核算机等板块逆势上涨,北向资金半天净卖出额约38亿元。 个股方面,昨夜公告被证监会立案查询的奥联电子股价再度大跌,盘中最贱价较近期高位已腰斩。…

Q1净亏损1.35亿元,4G增长乏力「困扰」车规通讯模组龙头

“汽车前装从4G到5G的切换需要一定的时间,现阶段,5G的价格更高,国内客户从4G向5G的转换会受到一些短期影响。”这是车载通讯模组市场龙头企业—移远通信在近日投资者互动上的公开表态。 4G渗透率趋于稳定,5G增速不及预期&#xff…