python 笔记02 - google sheet应用

背景说明

因为项目中需要用到google sheet进行协同开发,我们客户端开发人员从goole sheet上面复制需要用到的数据,然后再手动黏贴到工程文件中,因为工程文件有多个,而且每次版本迭代都需要进行相同的操作,很浪费人力。最近学了下python,就想着怎么能够使用脚本去解决问题,努力了一番,所以就有了这篇简单的分享文章。

思路

想要实现脚本自动化,我们就需要能自动完成两步:1. 自动从google sheet上去获取目标数据 2. 获取到目标数据后,自动写入目标文件。

1. 从google sheet上获取目标数据

google sheet本质上也是一个网站,所以一开始我想着是不是可以才去爬虫的方式进行处理,然而看了下网站源码,简直一脸蒙蔽,要从这上面直接爬取目标数据,对于还没有python入门的我来说,难度有点大,所以果断放弃了。然后就在google上搜索,人海茫茫,总是有志同道合的人在,终于发现原来google sheet早已经开放了接口,供我们去调用。相关链接:google sheet 指南。看了下指南,我开始动手了~

step1

配置python运行环境,安装python包管理工具pip,并安装脚本所需要的库,安装库的命令如下:

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

step 2

因为要使用到google sheet的api,所以我们需要一个google账号来申请权限,并生成相应的配置文件,相关操作在上文的指南链接上面都有进行说明:

image.png

打开上文的链接,然后点击蓝色的“ENABLE THE GOOGLE SHEETS API” 按钮,会首先要求你登陆自己的google账号,登陆完成后,下载configuration.json到脚本工程目录中。

step 3

进行了前期的准备工作,我们就可以开始直接拍代码了~

  1. 验证权限,代码如下所示
def check_auth():
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)

    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token: 
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPE)
            creds = flow.run_local_server()
            

            with open('token.pickle', 'wb') as token:
                pickle.dump(creds, token)

    return creds
  1. 创建sheet对象读取数据
    service = build('sheets', 'v4', credentials=creds)
    
    setting = Settings()
    spreadsheets_id = setting.SAMPLE_SPREADSHEET_ID
    content_range = setting.SAMPLE_RANGE_NAME

    sheet = service.spreadsheets()
    result = sheet.values().get(spreadsheetId=spreadsheets_id, range=content_range).execute()
    values = result.get('values',[])

其中需要特别说明下两个参数:

一个是spreadsheetId,这个是google sheet网址上的一个ID,网址的结构类似这样子:https://docs.google.com/spreadsheets/d/spreadsheetId/edit?ts=#gid=,我们可以直接从网址上去获取到这个spreadsheetId

另外一个参数range,它的结构类似这样子表名!B2:G4,它是用来获取数据的详细位置,第一个部分代表你要读取数据的表, B2:G4,代表B2 到 G4这个矩形中包含的数据:

B2 B3 B4
.. .. ..
G2 G3 G4

2. 写数据到目标文件

读取到我们自己想要的数据后,就可以直接写入到目标文件中了:

    with open(file_path, 'a', encoding="utf-8") as file_object:
            file_object.write(string)

Done!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容

  • 第一部分 创建爬虫 重点介绍网络数据采集的基本原理 : 如何用 Python 从网络服务器 请求信息,如何对服务器...
    万事皆成阅读 2,046评论 0 5
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 3,025评论 0 10
  • 常用库: fuzzywuzzy,字符串模糊匹配。 esmre,正则表达式的加速器。 Chardet字符编码探测器,...
    AlastairYuan阅读 2,275评论 0 43
  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,565评论 6 37
  • python 也是很值得学习的一门工具。学好python和R。 1环境管理 管理 Python 版本和环境的工具 ...
    Liam_ml阅读 4,812评论 1 51