背景說明
因為項目中需要用到google sheet進行協(xié)同開發(fā),我們客戶端開發(fā)人員從goole sheet上面復(fù)制需要用到的數(shù)據(jù)景图,然后再手動黏貼到工程文件中蚯舱,因為工程文件有多個随常,而且每次版本迭代都需要進行相同的操作,很浪費人力盏阶。最近學(xué)了下python怜瞒,就想著怎么能夠使用腳本去解決問題,努力了一番,所以就有了這篇簡單的分享文章吴汪。
思路
想要實現(xiàn)腳本自動化惠窄,我們就需要能自動完成兩步:1. 自動從google sheet上去獲取目標(biāo)數(shù)據(jù) 2. 獲取到目標(biāo)數(shù)據(jù)后,自動寫入目標(biāo)文件漾橙。
1. 從google sheet上獲取目標(biāo)數(shù)據(jù)
google sheet本質(zhì)上也是一個網(wǎng)站杆融,所以一開始我想著是不是可以才去爬蟲的方式進行處理,然而看了下網(wǎng)站源碼霜运,簡直一臉蒙蔽脾歇,要從這上面直接爬取目標(biāo)數(shù)據(jù),對于還沒有python入門的我來說淘捡,難度有點大藕各,所以果斷放棄了。然后就在google上搜索焦除,人海茫茫激况,總是有志同道合的人在,終于發(fā)現(xiàn)原來google sheet早已經(jīng)開放了接口膘魄,供我們?nèi)フ{(diào)用乌逐。相關(guān)鏈接:google sheet 指南〈雌希看了下指南浙踢,我開始動手了~
step1
配置python運行環(huán)境,安裝python包管理工具pip灿渴,并安裝腳本所需要的庫洛波,安裝庫的命令如下:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
step 2
因為要使用到google sheet的api,所以我們需要一個google賬號來申請權(quán)限骚露,并生成相應(yīng)的配置文件奋岁,相關(guān)操作在上文的指南鏈接上面都有進行說明:
打開上文的鏈接,然后點擊藍色的“ENABLE THE GOOGLE SHEETS API” 按鈕荸百,會首先要求你登陸自己的google賬號闻伶,登陸完成后,下載configuration.json
到腳本工程目錄中够话。
step 3
進行了前期的準(zhǔn)備工作蓝翰,我們就可以開始直接拍代碼了~
- 驗證權(quán)限,代碼如下所示
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
- 創(chuàng)建sheet對象讀取數(shù)據(jù)
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',[])
其中需要特別說明下兩個參數(shù):
一個是spreadsheetId
女嘲,這個是google sheet網(wǎng)址上的一個ID畜份,網(wǎng)址的結(jié)構(gòu)類似這樣子:https://docs.google.com/spreadsheets/d/spreadsheetId/edit?ts=#gid=
,我們可以直接從網(wǎng)址上去獲取到這個spreadsheetId
欣尼。
另外一個參數(shù)range
爆雹,它的結(jié)構(gòu)類似這樣子表名!B2:G4
停蕉,它是用來獲取數(shù)據(jù)的詳細位置,第一個部分代表你要讀取數(shù)據(jù)的表钙态, B2:G4慧起,代表B2 到 G4這個矩形中包含的數(shù)據(jù):
B2 | B3 | B4 |
---|---|---|
.. | .. | .. |
G2 | G3 | G4 |
2. 寫數(shù)據(jù)到目標(biāo)文件
讀取到我們自己想要的數(shù)據(jù)后,就可以直接寫入到目標(biāo)文件中了:
with open(file_path, 'a', encoding="utf-8") as file_object:
file_object.write(string)
Done册倒!