PHP對Google 試算表做CRUD
Google Sheets有API可以做查詢與編輯,近日架設了LINE BOT對話機器人,就利用了Google試算表來做簡單的資料庫,這裡記錄一下CRUD的練習程式碼。
那麼要準備什麼東西呢?
如果有把"_READONLY"這幾個字刪除,取得授權時,可以看到多了些讀取以外權限!
而授權後,在quickstart.php資料夾內會多了一個token.json檔案,請保留別刪除了噢!我們來建立一支PHP做個資料查詢試試吧!可以正常運作就準備把整個資料夾打包丟上你的Server囉!
先附上資料查詢的程式碼:
那麼要準備什麼東西呢?
- 有Google帳號,建立一份Google試算表,並且開啟分享(取得試算表ID)
- 啟用Google Sheets API 並取得credentials.json檔案(本文就直接用API範例的Quickstart來修改,至於怎麼啟用API網路上有很多精美圖文教學可參考)
- PHP運作環境
- 準備好Google Client Library (如果你的環境沒有Composer,可以先在你的電腦安裝XAMPP與Composer,取得Google Client Library後,做Quickstart範例看看,沒問題再一起上傳到你的空間)
快點開始吧!其實在Google Sheets API裡面的Quickstart範例已經有程式碼與步驟了,複製貼上,下個指令取得授權就可以玩。(vendor資料夾與credentials.json檔案的位置要留意一下)
但是!有個重點:這程式碼(如下圖紅框處),有一行程式會造成我們只能讀取而不能刪改資料,請把"_READONLY"刪除掉,我們才能做後續的新增、修改、刪除資料。
如果有把"_READONLY"這幾個字刪除,取得授權時,可以看到多了些讀取以外權限!
而授權後,在quickstart.php資料夾內會多了一個token.json檔案,請保留別刪除了噢!我們來建立一支PHP做個資料查詢試試吧!可以正常運作就準備把整個資料夾打包丟上你的Server囉!
先附上資料查詢的程式碼:
<?php require __DIR__ . '/vendor/autoload.php'; $client = new Google_Client(); $client->setAuthConfig('credentials.json'); $client->setAccessType('offline'); $service = new Google_Service_Sheets($client); $tokenPath = 'token.json'; if (file_exists($tokenPath)) { $accessToken = json_decode(file_get_contents($tokenPath), true); $client->setAccessToken($accessToken); } //這是DEMO用的試算表ID $spreadsheetId = '1R8yd6608Mux8tYlX2tNqNmOiKtrsxJDKJaxlHWRYBHU'; $range = '工作表1'; $response = $service->spreadsheets_values->get($spreadsheetId, $range); $values = $response->getValues(); if (empty($values)) { print "No data found.\n"; } else { //只顯示A、B兩欄的所有資料 foreach ($values as $row) { echo $row[0]." - ".$row[1]."<br />"; } } ?>含有新增、修改、刪除的DEMO的式碼放在GitHub囉,不過請注意一下!我這裡的Google APIs Client Library刪除了很多東西(不然免費空間塞不下),如果需要用到GoogleSheets以外的API,請用官方完整的版本唷!
作者已經移除這則留言。
回覆刪除你好, 我跟你的做了一次, 但做不出來。
回覆刪除1. 取得credentials.json前, 我應該選擇web server 吧? LINK的部份包括quickstart.php 嗎?
2. 當我輸入你github上的quickstart.php code時, 他說Error 500, 是怎麼一會事?
3. 當我php quickstart.php時, 他要我輸入Enter verification code:, 是怎麼一會事?
謝謝
這裡有你要的答案
刪除https://stackoverflow.com/questions/64030724/google-sheets-api-verification-flow-does-not-provide-a-verification-code