2016年6月23日 星期四

[PHP] 使用 Google api client 操作 Google Spreadsheet API (Google Docs - Excel)

最近在整理資料,由於使用情境尚未明朗,想了一下就把資料塞到 Excel 來呈現,要排序、輸出跟轉 PDF 檔都 ok ,再加上有定期更新的需求,就來找一下 Google Spreadsheet API 來用用:https://developers.google.com/sheets/ ,程式擺在:

https://github.com/changyy/codeigniter-library-google-spreadsheet

由於同事比較熟 PHP ,就繼續挑 PHP 路線了 :P 沒想到 PHP 相關的 library 滿少的,大概都推薦 github.com/asimlqt/php-google-spreadsheet-client 這套了,但他採用的 API 所實作出來的有些侷限,但已經可以滿足八成的需求了!

最後為了達成自己想幹的事,在 k 完文件跟摸索後,還是自己下海包一份當作筆記(實在是官方文件都沒寫很清楚,只能自己追細節),包括的功能:

  • 支援單獨使用,以及和 PHP CodeIgniter 合用
  • 使用 composer.json 維護相依性:只有使用 google/apiclient: https://github.com/google/google-api-php-client
  • 使用  Google Spreadsheet API v4
  • 取得 Spreadsheet 清單 (使用 v3 API)
  • 建立 Spreadsheet
  • 修改 Spreadsheet name
  • 建立 Worksheet
  • 刪除 Worksheet
  • 可對 Worksheet 凍結視窗(frozenRow/frozenColumn)
  • 更新 Cells 資料
  • 搭配 Web server (如 CodeIgniter Controller 架構),可以完成 Google OAuth 流程,取得 Access Token 跟 Refresh Token
  • 搭配 Google OAuth offline 權限,可以自動 renew access_token

整體上,若不需要建立 Spreadsheet 跟 frozenRowColumn 的功能,建議直接用 asimlqt/php-google-spreadsheet-client 即可,我只先完成自己需要的部分。

沒有留言:

張貼留言