美文网首页
python 笔记02 - google sheet应用

python 笔记02 - google sheet应用

作者: dkStart | 来源:发表于2019-04-09 21:26 被阅读0次

    背景说明

    因为项目中需要用到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!

    相关文章

      网友评论

          本文标题:python 笔记02 - google sheet应用

          本文链接:https://www.haomeiwen.com/subject/cftwiqtx.html